mowascript
Version:
MowaScript language implementation
98 lines (83 loc) • 3.37 kB
Markdown
[[🌀Interslavic](../../04_compiler.md) · [🇺🇸 English](../en/04_compiler.md)]
# Архітектура компілятора MowaJS
Компілятор (або транспайлер) MowaJS перетворює код, написаний зрозумілою слов’янською мовою, у валідний JavaScript. Він підтримує багатомовні ключові слова, гнучку конфігурацію, трансформацію синтаксису та виконується як CLI або бібліотека.
## ⚙️ Етапи роботи компілятора
```text
┌────────────┐
│ Вхідний │ (код .mowa)
│ код │
└────┬───────┘
│
▼
┌────────────┐
│ Лексер │ (розпізнає токени)
└────┬───────┘
│
▼
┌────────────┐
│ Парсер │ (будує AST — дерево)
└────┬───────┘
│
▼
┌────────────────────┐
│ Транслятор/Трансформер │ (перетворює AST у JS AST)
└────┬───────────────┘
│
▼
┌────────────┐
│ Генератор │ (вивід .js файлу)
└────────────┘
```
Компілятор працює на базі словників з ключовими словами:
- Український (ua.js)
- Білоруський (by.js)
- Російський (ru.js)
- Інтерславянський (isv.js)
- ...
При парсингу він порівнює слова в коді з відомими словниками й автоматично мапить їх на JS-ключі або методи.
```json
{
"якщо": "if",
"поки": "while",
"додайДоРядка": {
"target": "concat",
"type": "string"
}
}
```
## ⚙️ Побудова AST (Abstract Syntax Tree)
MowaJS використовує дерево абстрактного синтаксису, яке будиться з урахуванням перекладу:
```js
якщо (вік >= 18) {
кажи("Дорослий");
}
```
Це трансформується у:
```js
if (вік >= 18) {
console.log("Дорослий");
}
```
## 🔄 Трансформація
Ключові етапи:
- Alias → JS-ключ: функція → function
- Методи → API: govori() → console.log()
- Логіка → символи: і → &&, або → ||
- Підтримка діалектів: автоматично через словник
## 💡 Можливості
- ✅ Мультисинтаксис
- ✅ Кастомні словники
- ✅ CLI: mowa build, mowa run
- ⏳ Linting + підсвітка
- ⏳ Playground (у розробці)
## 💡 Майбутнє
- AST-based лінтінг та підказки
- Live-редактор у браузері
- Інтеграція з редакторами (VSCode, WebStorm)
- Препроцесинг шаблонів
- Повна підтримка TypeScript-типів у Mowa