An open API service indexing awesome lists of open source software.

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.

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:


Udav icon

## 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 icon

## Огляд

**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) — як повідомляти про уразливості