UNPKG

mowascript

Version:

MowaScript language implementation

98 lines (83 loc) 3.37 kB
[[🌀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