добавил readme

This commit is contained in:
SkrinVex
2025-12-25 17:20:14 +05:00
parent 70bbef315f
commit 4a54c2a923
+78
View File
@@ -0,0 +1,78 @@
# 🦊 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++/Java) с динамической гибкостью скриптовых языков. Проект демонстрирует реализацию собственного лексера, рекурсивного парсера, AST-дерева и модульной архитектуры.
> **Главная фишка v4.0:** Умная система импорта, которая позволяет подключать библиотеки, выполняя только объявления функций и игнорируя исполняемый код.
## ✨ Ключевые возможности
- **📁 Модульность:** Подключение файлов через `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]
**License:** MIT