79 lines
3.1 KiB
Markdown
79 lines
3.1 KiB
Markdown
# π¦ FoxLang
|
|
|
|
  
|
|
|
|
**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
|