https://github.com/nikitaberezhnyj/udav
Python dialect with Ukrainian syntax.
https://github.com/nikitaberezhnyj/udav
cpp language programming-language python udav udav-programming-language
Last synced: 23 days ago
JSON representation
Python dialect with Ukrainian syntax.
- Host: GitHub
- URL: https://github.com/nikitaberezhnyj/udav
- Owner: NikitaBerezhnyj
- License: mit
- Created: 2023-11-09T09:13:28.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2025-10-23T12:47:23.000Z (7 months ago)
- Last Synced: 2025-10-23T13:29:26.342Z (7 months ago)
- Topics: cpp, language, programming-language, python, udav, udav-programming-language
- Language: C++
- Homepage:
- Size: 347 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Udav
Udav repository has [English :uk:](#udav-programming-language-uk) and [Ukrainian :ukraine:](#мова-програмування-udav-ukraine) localizations
## Udav Programming Language :uk:
## Overview
**Udav** is a playful programming language based on Python, translated into Ukrainian. The idea started as an inside joke: the name "Udav" came from calling Python "Udav". The goal of Udav is to provide a simple and readable syntax for learning and experimentation, while supporting all standard Python modules. Udav code compiles into Python, allowing it to run in a normal Python environment.
## Features
- Python-based syntax translated into Ukrainian
- Supports all standard Python modules
- Compiler can be run from any directory after initialization
- Simple input/output, arrays, conditional statements, loops, and functions
- Object-Oriented Programming (OOP) support
## Technologies Used
- C++17 (Udav compiler)
- Python (output code generated by Udav)
- CMake for cross-platform build
## Getting Started
To start using **Udav**, follow these steps:
1. Clone the repository:
```bash
git clone https://github.com/NikitaBerezhnyj/Udav.git
```
2. Navigate to the project root:
```bash
cd Udav
```
3. Create a build directory and navigate into it:
```bash
mkdir build
cd build
```
4. Run CMake to generate build files:
```bash
cmake ..
```
5. Build the project:
```bash
cmake --build . --config Release
```
or
```bash
cmake --build . --config Debug
```
6. Initialize **Udav** to make it accessible from any directory:
```bash
./udav --init
```
After initialization, you can run Udav from any folder:
```bash
udav example.udav
udav example.udav -o my_file -b
```
## Usage
### Syntax Basics
**Comments**
```python
# This is a comment
```
**Printing to the screen**
```python
друк("Hello, World!")
```
**Variable declaration**
```python
інт = 10
флоат = 10.5
стрінг = "String"
бул = правда
```
**User input**
```python
input_string = ввід()
input_int = ціле(ввід())
input_float = дійсне(ввід())
```
**Arrays**
```python
int_array = [0, 1]
float_array = [0.5, 1.001]
string_array = ["hello", "world"]
bool_array = [правда, правда, брехня]
```
**Conditionals**
```python
якщо a < 5:
друк("<5")
інакшеЯкщо a > 5 та a < 8:
друк("<5 and >8")
інакше:
друк(">8")
```
**Loops**
```python
counter = 0
поки counter < 10:
counter += 1
друк(counter)
для i до діапазон(10):
друк("Hello, World!")
```
**Functions**
```python
функція Hello_World():
times = ціле(ввід("Enter number of repetitions: "))
для i до діапазон(times):
друк("Hello, World!")
```
**OOP**
```python
клас Animal:
функція __init__(своє, nickname, age):
своє.nickname = nickname
своє.age = age
функція Voice(своє):
викинути VirtualMethodError("Method should be implemented in subclasses")
клас Dog(Animal):
функція Voice(своє):
повернути "Woof!"
клас Cat(Animal):
функція Voice(своє):
повернути "Meow!"
```
### Initialization and Uninitialization
- **Initialization**: `./udav --init` or `./udav -i`
- **Uninitialization**: `./udav --uninit` or `./udav -u`
## Code Examples
**Guess the Number Game**
```python
отримати random
функція Game(attempts, random_number):
для attempt до діапазон(attempts):
user_number = ціле(ввід("Enter a number: "))
якщо user_number < random_number:
друк("The winning number is higher")
інакшеЯкщо user_number > random_number:
друк("The winning number is lower")
інакше:
друк("You won!")
повернути 0
друк("You lost")
друк(f"The winning number: {random_number}")
random_number = random.randrange(1, 10)
attempts = ціле(ввід("How many attempts do you want:"))
Game(attempts, random_number)
```
## Useful Links
- **Udav IDE**: [NUB_IDE](https://github.com/NikitaBerezhnyj/NUB_IDE)
- **VS Code Extension**: [Udav Language Support](https://github.com/NikitaBerezhnyj/Udav_Language_Support_for_VS_Code)
- **Documentation**: [nub-project-docs](https://nub-project-docs.netlify.app)
## License & Contribution
- [License](LICENSE) — project license
- [Code of Conduct](CODE_OF_CONDUCT.md) — expected behavior for contributors
- [Contributing Guide](CONTRIBUTING.md) — how to help the project
- [Security Policy](SECURITY.md) — reporting vulnerabilities
---
## Мова програмування Udav :ukraine:
## Огляд
**Udav** — жартівлива мова програмування на основі Python, перекладена на українську. Ідея виникла як внутрішній жарт: назва "Удав" походить від того, що Python назвали "Удавом". Мета Udav — надати простий та зрозумілий синтаксис для навчання та експериментів, підтримуючи всі стандартні Python модулі. Код на Udav компілюється у Python, що дозволяє його виконувати у звичному середовищі.
## Особливості
- Синтаксис на основі Python, перекладений українською
- Підтримка всіх стандартних Python модулів
- Можливість запускати компілятор з будь-якої директорії після ініціалізації
- Простий ввід/вивід, масиви, умовні конструкції, цикли, функції
- Підтримка ООП парадигми
## Використані технології
- C++17 (компілятор Udav)
- Python (вихідний код, який генерує Udav)
- CMake для кросплатформної збірки
## Початок роботи
Щоб почати користуватися **Udav**, виконайте наступне:
1. Клонуйте репозиторій:
```bash
git clone https://github.com/NikitaBerezhnyj/Udav.git
```
2. Перейдіть у кореневу теку проекту:
```bash
cd Udav
```
3. Створіть теку для збірки та перейдіть у неї:
```bash
mkdir build
cd build
```
4. Запустіть CMake для генерації файлів збірки:
```bash
cmake ..
```
5. Зберіть проект:
```bash
cmake --build . --config Release
```
або
```bash
cmake --build . --config Debug
```
6. Ініціалізуйте **Udav** для використання з будь-якої директорії:
```bash
./udav --init
```
Після цього ви зможете запускати Udav з будь-якої текі:
```bash
udav example.udav
udav example.udav -o my_file -b
```
## Використання
### Основи синтаксису
**Коментарі**
```python
# Це коментар
```
**Вивід на екран**
```python
друк("Привіт, Світ!")
```
**Оголошення змінних**
```python
інт = 10
флоат = 10.5
стрінг = "Рядок"
бул = правда
```
**Ввід користувача**
```python
рядок_вводу = ввід()
число_вводу = ціле(ввід())
дріб_вводу = дійсне(ввід())
```
**Масиви**
```python
цілий_масив = [0, 1]
дробовий_масив = [0.5, 1.001]
рядковий_масив = ["привіт", "світ"]
булевий_масив = [правда, правда, брехня]
```
**Умови**
```python
якщо а < 5:
друк("<5")
інакшеЯкщо а > 5 та а < 8:
друк("<5 and >8")
інакше:
друк(">8")
```
**Цикли**
```python
лічильник = 0
поки лічильник < 10:
лічильник += 1
друк(лічильник)
для л до діапазон(10):
друк("Привіт, Світ!")
```
**Функції**
```python
функція Привіт_світ():
рази = ціле(ввід("Введіть кількість повторів: "))
для i до діапазон(рази):
друк("Привіт, Світ!")
```
**ООП**
```python
клас Тварина:
функція __init__(своє , прізвисько, вік):
своє.прізвисько = прізвисько
своє.вік = вік
функція Голос(своє):
викинути ПомилкаВіртуальногоМетоду("Метод реалізується у підкласах")
клас Собака(Тварина):
функція Голос(своє):
повернути "Гав!"
клас Кіт(Тварина):
функція Голос(своє):
повернути "Няв!"
```
### Ініціалізація та деініціалізація
- **Ініціалізація**: `./udav --init` або `./udav -i`
- **Деініціалізація**: `./udav --uninit` або `./udav -u`
## Приклади коду
**Гра "Вгадай число"**
```python
отримати random
функція Гра(кількість_спроб, випадкове_число):
для спроба до діапазон(кількість_спроб):
користувацьке_число = ціле(ввід("Введіть число: "))
якщо користувацьке_число < випадкове_число:
друк("Переможне число більше")
інакшеЯкщо користувацьке_число > випадкове_число:
друк("Переможне число менше")
інакше:
друк("Ви виграли!")
повернути 0
друк("Ви програли")
друк(f"Переможне число: {випадкове_число}")
випадкове_число = random.randrange(1, 10)
кількість_спроб = ціле(ввід("Скільки ви хочете спроб:"))
Гра(кількість_спроб, випадкове_число)
```
## Корисні посилання
- **IDE для Udav**: [NUB_IDE](https://github.com/NikitaBerezhnyj/NUB_IDE)
- **Розширення для VS Code**: [Udav Language Support](https://github.com/NikitaBerezhnyj/Udav_Language_Support_for_VS_Code)
- **Документація**: [nub-project-docs](https://nub-project-docs.netlify.app)
## Ліцензія та внесок
- [Ліцензія](LICENSE) — умови використання
- [Кодекс поведінки](CODE_OF_CONDUCT.md) — очікувана поведінка для учасників
- [Внесок у проєкт](CONTRIBUTING.md) — як допомогти проєкту
- [Політика безпеки](SECURITY.md) — як повідомляти про уразливості