76 lines
2.9 KiB
Markdown
76 lines
2.9 KiB
Markdown
# 🦊 FoxLang
|
|
|
|
  
|
|
|
|
**FoxLang** — это интерпретируемый язык программирования общего назначения, разработанный с нуля на C++.
|
|
Он сочетает строгий синтаксис (в стиле C++/Java) с динамической гибкостью скриптовых языков. Проект демонстрирует реализацию собственного лексера, рекурсивного парсера, 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]
|
|
**License:** MIT |