Фиксация мамы нолнан с сфере IT с симпатией к атусу стоещему на полигоне
с афроо лошадьми
This commit is contained in:
@@ -1,76 +1,158 @@
|
||||
# 🦊 FoxLang
|
||||
|
||||
  
|
||||
  
|
||||
|
||||
**FoxLang** — это интерпретируемый язык программирования общего назначения, разработанный с нуля на C++.
|
||||
Он сочетает строгий синтаксис (в стиле C++) с динамической гибкостью скриптовых языков. Проект демонстрирует реализацию собственного лексера, рекурсивного парсера, AST-дерева и модульной архитектуры.
|
||||
**FoxLang** — современный интерпретируемый язык программирования общего назначения с поддержкой пользовательских функций, модульной системы и строгой типизацией.
|
||||
|
||||
## ✨ Ключевые возможности
|
||||
|
||||
- **📁 Модульность:** Подключение файлов через `include("lib.fox")` с поддержкой относительных путей.
|
||||
- **📦 Массивы:** Встроенная поддержка создания, чтения и записи массивов (`array`, `set`, `get`).
|
||||
- **🔄 Управление потоком:** Полноценные циклы `while` и условия `if/else`.
|
||||
- **🔢 Типизация:** Поддержка `int` и `string` с автоматическим приведением типов при выводе.
|
||||
- **🛠 Безопасность:** Защита от крашей при сравнении строк и чисел, информативные ошибки синтаксиса.
|
||||
- **🎲 Встроенная библиотека:** Генерация чисел, математика, ввод/вывод.
|
||||
- **🔧 Пользовательские функции:** Полная поддержка функций с параметрами и возвратом значений
|
||||
- **📁 Модульная система:** Подключение библиотек через `include("lib.fox")` с поддержкой пользовательских функций
|
||||
- **🔤 Современный синтаксис:** Идентификаторы с подчеркиваниями (`user_name`, `get_data`)
|
||||
- **📦 Массивы:** Встроенная поддержка создания, чтения и записи массивов
|
||||
- **🔄 Управление потоком:** Циклы `while`, `for` и условия `if/else`
|
||||
- **🔢 Строгая типизация:** `int`, `float`, `string`, `bool`, `void` с автоматическим приведением
|
||||
- **🧠 Логические операторы:** Поддержка `&&`, `||`, `!` для boolean логики
|
||||
- **🛠 Безопасность:** Защита от крашей, информативные ошибки синтаксиса
|
||||
- **🎲 Встроенные функции:** Математика, ввод/вывод, генерация чисел, чтение файлов
|
||||
|
||||
## 🚀 Быстрый старт
|
||||
|
||||
### 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();
|
||||
```
|
||||
|
||||
Запустите его:
|
||||
|
||||
### 2. Запуск
|
||||
```bash
|
||||
./foxlang main.fox
|
||||
./foxlang script.fox
|
||||
```
|
||||
|
||||
## 💻 Пример кода
|
||||
## 💻 Примеры кода
|
||||
|
||||
### Пользовательские функции
|
||||
```cpp
|
||||
// Подключаем библиотеку
|
||||
include("math_lib.fox");
|
||||
|
||||
int x = 10;
|
||||
|
||||
if (x > 5) {
|
||||
print("X is big!");
|
||||
} else {
|
||||
print("X is small.");
|
||||
int factorial(int n) {
|
||||
if (n <= 1) {
|
||||
return 1;
|
||||
}
|
||||
return n * factorial(n - 1);
|
||||
}
|
||||
|
||||
// Работа с массивом
|
||||
array nums 3;
|
||||
set(nums, 0, 555);
|
||||
print("Array elem: " + get(nums, 0));
|
||||
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");
|
||||
}
|
||||
```
|
||||
|
||||
### HTTP запросы
|
||||
```cpp
|
||||
// Получение данных с API
|
||||
string response = http_get("https://api.github.com/users/octocat");
|
||||
if (response != "") {
|
||||
print("✅ API response received");
|
||||
print("Data: " + response);
|
||||
} else {
|
||||
print("❌ Failed to fetch data");
|
||||
}
|
||||
```
|
||||
|
||||
## 📂 Структура проекта
|
||||
|
||||
* `src/` — Исходный код интерпретатора (C++).
|
||||
* `test/` — Примеры скриптов `.fox`.
|
||||
* `doc/` — Документация.
|
||||
* `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)
|
||||
**Author:** [SkrinVex](https://skrinvex.su)
|
||||
**License:** MIT
|
||||
|
||||
Reference in New Issue
Block a user