db71acacdd87b91fb0b2c5fc04d2dd1a5a672f9f
🦊 FoxLang
FoxLang — современный интерпретируемый язык программирования общего назначения с поддержкой пользовательских функций, модульной системы и строгой типизацией.
✨ Ключевые возможности
- 🔧 Пользовательские функции: Полная поддержка функций с параметрами и возвратом значений
- 📁 Модульная система: Подключение библиотек через
include("lib.fox")с поддержкой пользовательских функций - 🔤 Современный синтаксис: Идентификаторы с подчеркиваниями (
user_name,get_data) - 📦 Массивы: Встроенная поддержка создания, чтения и записи массивов
- 🔄 Управление потоком: Циклы
while,forи условияif/else - 🔢 Строгая типизация:
int,float,string,bool,voidс автоматическим приведением - 🧠 Логические операторы: Поддержка
&&,||,!для boolean логики - 🛠 Безопасность: Защита от крашей, информативные ошибки синтаксиса
- 🎲 Встроенные функции: Математика, ввод/вывод, генерация чисел, чтение файлов
🚀 Быстрый старт
1. Сборка (Linux)
cd src
g++ main.cpp Lexer.cpp Parser.cpp -o foxlang
1.2. Сборка (Windows)
cd src
g++ main.cpp Lexer.cpp Parser.cpp -o foxlang.exe
1.3. Сборка Wimdows (MSVC)
cd src
cl main.cpp Lexer.cpp Parser.cpp /Fefoxlang.exe
2. Запуск (Linux)
./foxlang script.fox
2.1. Запуск (Windows)
foxlang.exe script.fox
💻 Примеры кода
Пользовательские функции
int factorial(int n) {
if (n <= 1) {
return 1;
}
return n * factorial(n - 1);
}
void main() {
int result = factorial(5);
print("5! = " + result);
}
main();
Работа с массивами
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;
}
}
Модульная система
// 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);
Чтение файлов
// 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-подобный веб-сервер
// Подключение сетевой библиотеки
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— Полная документация языка
🧪 Тестирование
# Тесты
./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
License: MIT
Languages
C++
100%