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

77 lines
2.8 KiB
Markdown

# 🦊 FoxLang
![Version](https://img.shields.io/badge/version-4.0.0-orange) ![Language](https://img.shields.io/badge/language-C++17-blue) ![License](https://img.shields.io/badge/license-MIT-green)
**FoxLang** β€” это ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ язык программирования ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ с нуля Π½Π° C++.
Он сочСтаСт строгий синтаксис (Π² стилС C++) с динамичСской Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒΡŽ скриптовых языков. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ дСмонстрируСт Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ собствСнного лСксСра, рСкурсивного парсСра, AST-Π΄Π΅Ρ€Π΅Π²Π° ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹.
## ✨ ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ возмоТности
- **πŸ“ ΠœΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ:** ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· `include("lib.fox")` с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡƒΡ‚Π΅ΠΉ.
- **πŸ“¦ ΠœΠ°ΡΡΠΈΠ²Ρ‹:** ВстроСнная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° создания, чтСния ΠΈ записи массивов (`array`, `set`, `get`).
- **πŸ”„ Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ:** ΠŸΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹Π΅ Ρ†ΠΈΠΊΠ»Ρ‹ `while` ΠΈ условия `if/else`.
- **πŸ”’ Випизация:** ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° `int` ΠΈ `string` с автоматичСским ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΈΠΏΠΎΠ² ΠΏΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅.
- **πŸ›  Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ:** Π—Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ ΠΊΡ€Π°ΡˆΠ΅ΠΉ ΠΏΡ€ΠΈ сравнСнии строк ΠΈ чисСл, ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ ошибки синтаксиса.
- **🎲 ВстроСнная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°:** ГСнСрация чисСл, ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ°, Π²Π²ΠΎΠ΄/Π²Ρ‹Π²ΠΎΠ΄.
## πŸš€ Быстрый старт
### 1. Π‘Π±ΠΎΡ€ΠΊΠ°
Π’Π°ΠΌ понадобится любой компилятор C++ (GCC, Clang, MSVC).
```bash
# ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² ΠΏΠ°ΠΏΠΊΡƒ с исходным ΠΊΠΎΠ΄ΠΎΠΌ
cd src
# Π‘ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚
g++ main.cpp Lexer.cpp Parser.cpp -o foxlang
```
*(На Windows Π±ΡƒΠ΄Π΅Ρ‚ создан Ρ„Π°ΠΉΠ» `foxlang.exe`)*
### 2. Запуск скрипта
Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» `main.fox`:
```cpp
print("Hello, FoxLang!");
fox();
```
ЗапуститС Π΅Π³ΠΎ:
```bash
./foxlang main.fox
```
## πŸ’» ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°
```cpp
// ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ
include("math_lib.fox");
int x = 10;
if (x > 5) {
print("X is big!");
} else {
print("X is small.");
}
// Π Π°Π±ΠΎΡ‚Π° с массивом
array nums 3;
set(nums, 0, 555);
print("Array elem: " + get(nums, 0));
```
## πŸ“‚ Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°
* `src/` β€” Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° (C++).
* `test/` β€” ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ скриптов `.fox`.
* `doc/` β€” ДокумСнтация.
---
**Author:** [SkrinVex](https://skrinvex.su)
**License:** MIT