mowascript
Version:
MowaScript language implementation
121 lines (97 loc) • 5.38 kB
Markdown
[[🌀Interslavic](../../02_syntax.md) · [🌲 East Slavic](../east/02_syntax.md)]
# ✍️ Syntax and Grammar
MowaJS is a language built on top of JavaScript, but adapted to Slavic-language syntax. The code compiles to regular JavaScript and remains fully compatible with the JS ecosystem.
---
This table shows JavaScript keywords with equivalents in Ukrainian, Belarusian, Russian, and Interslavic. It can be used to create the MowaJS transpiler which supports Slavic-style syntax.
| JavaScript | Ukrainian | Belarusian | Russian | 🌐 Interslavic |
|------------|-----------------|---------------|--------------|----------------|
| `if` | `якщо` | `калі` | `если` | `ako` |
| `else` | `інакше` | `іначай` | `иначе` | `inako` |
| `else if` | `інакше якщо` | `іначай калі` | `иначе если` | `inako ako` |
| `switch` | `вибір` | `выбар` | `когда` | `izbor` |
| `case` | `випадок` | `выпадак` | `случай` | `slucaj` |
| `default` | `типово` | `тыпова` | `типово` | `inace` |
| `break` | `зупини` | `спыні` | `заверши` | `konec` |
| `for` | `для` | `для` | `для` | `dla` |
| `while` | `поки` | `пакуль` | `пока` | `poka` |
| `do` | `роби` | `рабіць` | `делай` | `delaj` |
| `continue` | `продовж` | `працягнуць` | `продолжи` | `prodolzi` |
| `function` | `функція` | `функцыя` | `функция` | `funkcija` |
| `return` | `поверни` | `вярнуць` | `верни` | `vrati` |
| `let` | `нехай` / `хай` | `хай` | `пусть` | `nehaj` |
| `const` | `конст` | `канст` | `конст` | `konst` |
| `var` | `мур` | `мур` | `переменная` | `mur` |
---
## 📦 Basic Structure
MowaJS supports classical programming constructs:
- Variables: `нехай`, `канст`, `пусть`, `let`, `mur`
- Conditions: `якщо`, `if`, `если`, `ako`, `калі`
- Loops: `для`, `поки`, `дла`, `пакуль`, `while`
- Functions: `функція`, `функция`, `funkcija`, `функцыя`
- Classes: `клас`, `class`, `класс`, `klasa`
- Logic: `і`, `або`, `не`, `&&`, `||`, `!`
- Returns: `поверни`, `верни`, `vrati`, `вярнуць`
---
## 📚 Keywords Across Languages
| JS | Ukrainian | Belarusian | Russian | 🌍 Interslavic |
|---------------|-----------|--------------|--------------|----------------|
| `var` | `мур` | — | `переменная` | `mur` |
| `let` | `нехай` | — | `пусть` | `nehaj` |
| `const` | `конст` | `канст` | `конст` | `konst` |
| `if` | `якщо` | `калі` | `если` | `ako` |
| `else` | `інакше` | `іначай` | `иначе` | `inako` |
| `while` | `поки` | `пакуль` | `пока` | `poka` |
| `do` | `роби` | `рабіць` | `делай` | `delaj` |
| `for` | `для` | `для` | `для` | `dla` |
| `function` | `функція` | `функцыя` | `функция` | `funkcija` |
| `return` | `поверни` | `вярнуць` | `верни` | `vrati` |
| `break` | `зупини` | `спыніць` | `останови` | `prekrati` |
| `continue` | `продовж` | `працягнуць` | `продолжи` | `prodolzi` |
| `console.log` | `кажи` | `скажы` | `лог` | `govori` |
| `true` | `правда` | `праўда` | `истина` | `istina` |
| `false` | `брехня` | `хлусня` | `ложь` | `loz` |
| `null` | `нічого` | `нічога` | `ничего` | `nicto` |
| `this` | `це` | `гэта` | `это` | `se` |
---
## 🧠 Mixing Dialects
In MowaJS you can:
- choose a single dialect for the whole project,
- or freely mix them together,
- or even define a custom dictionary.
**Example:**
```js
funkcija privit() {
якщо (правда) {
govori("Привіт із різних світів!");
}
}
якщо (бал > 90) {
кажи("Відмінно!");
} інакше {
скажы("Можна краще");
}
```
**🔁 Loop examples:**
````js
для (нехай i = 0; i < 5; i++) {
govori(i);
}
пакуль (число > 0) {
лог(число);
число = число - 1;
}
````
**🔁 Structures:**
Arrays:
````js
нехай числа = [1, 2, 3];
govori(числа.довжина);
````
Objects:
````js
нехай користувач = {
імʼя: "Оля",
вік: 22
};
govori(користувач.імʼя);
````