{"id":20278250,"url":"https://github.com/nikitaberezhnyj/udav","last_synced_at":"2026-05-09T08:40:41.254Z","repository":{"id":206380644,"uuid":"716498999","full_name":"NikitaBerezhnyj/Udav","owner":"NikitaBerezhnyj","description":"Python dialect with Ukrainian syntax.","archived":false,"fork":false,"pushed_at":"2025-10-23T12:47:23.000Z","size":355,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-23T13:29:26.342Z","etag":null,"topics":["cpp","language","programming-language","python","udav","udav-programming-language"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NikitaBerezhnyj.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-11-09T09:13:28.000Z","updated_at":"2025-10-23T12:46:02.000Z","dependencies_parsed_at":null,"dependency_job_id":"3a045c09-7660-4ae3-989c-33a05042c86e","html_url":"https://github.com/NikitaBerezhnyj/Udav","commit_stats":null,"previous_names":["nikitaberezhnyj/udav"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/NikitaBerezhnyj/Udav","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NikitaBerezhnyj%2FUdav","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NikitaBerezhnyj%2FUdav/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NikitaBerezhnyj%2FUdav/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NikitaBerezhnyj%2FUdav/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NikitaBerezhnyj","download_url":"https://codeload.github.com/NikitaBerezhnyj/Udav/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NikitaBerezhnyj%2FUdav/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32812949,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-08T08:22:46.396Z","status":"online","status_checked_at":"2026-05-09T02:00:06.633Z","response_time":123,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpp","language","programming-language","python","udav","udav-programming-language"],"created_at":"2024-11-14T13:22:28.008Z","updated_at":"2026-05-09T08:40:41.236Z","avatar_url":"https://github.com/NikitaBerezhnyj.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Udav\n\nUdav repository has [English :uk:](#udav-programming-language-uk) and [Ukrainian :ukraine:](#мова-програмування-udav-ukraine) localizations\n\n## Udav Programming Language :uk:\n\n\u003cp align='center'\u003e\n  \u003cimg src='./assets/icon.png' alt='Udav icon' style=\"width:50%\"\u003e\n\u003c/p\u003e\n\n## Overview\n\n**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.\n\n## Features\n\n- Python-based syntax translated into Ukrainian\n- Supports all standard Python modules\n- Compiler can be run from any directory after initialization\n- Simple input/output, arrays, conditional statements, loops, and functions\n- Object-Oriented Programming (OOP) support\n\n## Technologies Used\n\n- C++17 (Udav compiler)\n- Python (output code generated by Udav)\n- CMake for cross-platform build\n\n## Getting Started\n\nTo start using **Udav**, follow these steps:\n\n1. Clone the repository:\n\n```bash\ngit clone https://github.com/NikitaBerezhnyj/Udav.git\n```\n\n2. Navigate to the project root:\n\n```bash\ncd Udav\n```\n\n3. Create a build directory and navigate into it:\n\n```bash\nmkdir build\ncd build\n```\n\n4. Run CMake to generate build files:\n\n```bash\ncmake ..\n```\n\n5. Build the project:\n\n```bash\ncmake --build . --config Release\n```\n\nor\n\n```bash\ncmake --build . --config Debug\n```\n\n6. Initialize **Udav** to make it accessible from any directory:\n\n```bash\n./udav --init\n```\n\nAfter initialization, you can run Udav from any folder:\n\n```bash\nudav example.udav\nudav example.udav -o my_file -b\n```\n\n## Usage\n\n### Syntax Basics\n\n**Comments**\n\n```python\n# This is a comment\n```\n\n**Printing to the screen**\n\n```python\nдрук(\"Hello, World!\")\n```\n\n**Variable declaration**\n\n```python\nінт = 10\nфлоат = 10.5\nстрінг = \"String\"\nбул = правда\n```\n\n**User input**\n\n```python\ninput_string = ввід()\ninput_int = ціле(ввід())\ninput_float = дійсне(ввід())\n```\n\n**Arrays**\n\n```python\nint_array = [0, 1]\nfloat_array = [0.5, 1.001]\nstring_array = [\"hello\", \"world\"]\nbool_array = [правда, правда, брехня]\n```\n\n**Conditionals**\n\n```python\nякщо a \u003c 5:\n    друк(\"\u003c5\")\nінакшеЯкщо a \u003e 5 та a \u003c 8:\n    друк(\"\u003c5 and \u003e8\")\nінакше:\n    друк(\"\u003e8\")\n```\n\n**Loops**\n\n```python\ncounter = 0\nпоки counter \u003c 10:\n    counter += 1\n    друк(counter)\n\nдля i до діапазон(10):\n    друк(\"Hello, World!\")\n```\n\n**Functions**\n\n```python\nфункція Hello_World():\n    times = ціле(ввід(\"Enter number of repetitions: \"))\n    для i до діапазон(times):\n        друк(\"Hello, World!\")\n```\n\n**OOP**\n\n```python\nклас Animal:\n    функція __init__(своє, nickname, age):\n        своє.nickname = nickname\n        своє.age = age\n    функція Voice(своє):\n        викинути VirtualMethodError(\"Method should be implemented in subclasses\")\n\nклас Dog(Animal):\n    функція Voice(своє):\n        повернути \"Woof!\"\n\nклас Cat(Animal):\n    функція Voice(своє):\n        повернути \"Meow!\"\n```\n\n### Initialization and Uninitialization\n\n- **Initialization**: `./udav --init` or `./udav -i`\n- **Uninitialization**: `./udav --uninit` or `./udav -u`\n\n## Code Examples\n\n**Guess the Number Game**\n\n```python\nотримати random\n\nфункція Game(attempts, random_number):\n    для attempt до діапазон(attempts):\n        user_number = ціле(ввід(\"Enter a number: \"))\n        якщо user_number \u003c random_number:\n            друк(\"The winning number is higher\")\n        інакшеЯкщо user_number \u003e random_number:\n            друк(\"The winning number is lower\")\n        інакше:\n            друк(\"You won!\")\n            повернути 0\n    друк(\"You lost\")\n    друк(f\"The winning number: {random_number}\")\n\nrandom_number = random.randrange(1, 10)\nattempts = ціле(ввід(\"How many attempts do you want:\"))\nGame(attempts, random_number)\n```\n\n## Useful Links\n\n- **Udav IDE**: [NUB_IDE](https://github.com/NikitaBerezhnyj/NUB_IDE)\n- **VS Code Extension**: [Udav Language Support](https://github.com/NikitaBerezhnyj/Udav_Language_Support_for_VS_Code)\n- **Documentation**: [nub-project-docs](https://nub-project-docs.netlify.app)\n\n## License \u0026 Contribution\n\n- [License](LICENSE) — project license\n- [Code of Conduct](CODE_OF_CONDUCT.md) — expected behavior for contributors\n- [Contributing Guide](CONTRIBUTING.md) — how to help the project\n- [Security Policy](SECURITY.md) — reporting vulnerabilities\n\n---\n\n## Мова програмування Udav :ukraine:\n\n\u003cp align='center'\u003e\n  \u003cimg src='./assets/icon.png' alt='Udav icon' style=\"width:50%\"\u003e\n\u003c/p\u003e\n\n## Огляд\n\n**Udav** — жартівлива мова програмування на основі Python, перекладена на українську. Ідея виникла як внутрішній жарт: назва \"Удав\" походить від того, що Python назвали \"Удавом\". Мета Udav — надати простий та зрозумілий синтаксис для навчання та експериментів, підтримуючи всі стандартні Python модулі. Код на Udav компілюється у Python, що дозволяє його виконувати у звичному середовищі.\n\n## Особливості\n\n- Синтаксис на основі Python, перекладений українською\n- Підтримка всіх стандартних Python модулів\n- Можливість запускати компілятор з будь-якої директорії після ініціалізації\n- Простий ввід/вивід, масиви, умовні конструкції, цикли, функції\n- Підтримка ООП парадигми\n\n## Використані технології\n\n- C++17 (компілятор Udav)\n- Python (вихідний код, який генерує Udav)\n- CMake для кросплатформної збірки\n\n## Початок роботи\n\nЩоб почати користуватися **Udav**, виконайте наступне:\n\n1. Клонуйте репозиторій:\n\n```bash\ngit clone https://github.com/NikitaBerezhnyj/Udav.git\n```\n\n2. Перейдіть у кореневу теку проекту:\n\n```bash\ncd Udav\n```\n\n3. Створіть теку для збірки та перейдіть у неї:\n\n```bash\nmkdir build\ncd build\n```\n\n4. Запустіть CMake для генерації файлів збірки:\n\n```bash\ncmake ..\n```\n\n5. Зберіть проект:\n\n```bash\ncmake --build . --config Release\n```\n\nабо\n\n```bash\ncmake --build . --config Debug\n```\n\n6. Ініціалізуйте **Udav** для використання з будь-якої директорії:\n\n```bash\n./udav --init\n```\n\nПісля цього ви зможете запускати Udav з будь-якої текі:\n\n```bash\nudav example.udav\nudav example.udav -o my_file -b\n```\n\n## Використання\n\n### Основи синтаксису\n\n**Коментарі**\n\n```python\n# Це коментар\n```\n\n**Вивід на екран**\n\n```python\nдрук(\"Привіт, Світ!\")\n```\n\n**Оголошення змінних**\n\n```python\nінт = 10\nфлоат = 10.5\nстрінг = \"Рядок\"\nбул = правда\n```\n\n**Ввід користувача**\n\n```python\nрядок_вводу = ввід()\nчисло_вводу = ціле(ввід())\nдріб_вводу = дійсне(ввід())\n```\n\n**Масиви**\n\n```python\nцілий_масив = [0, 1]\nдробовий_масив = [0.5, 1.001]\nрядковий_масив = [\"привіт\", \"світ\"]\nбулевий_масив = [правда, правда, брехня]\n```\n\n**Умови**\n\n```python\nякщо а \u003c 5:\n    друк(\"\u003c5\")\nінакшеЯкщо а \u003e 5 та а \u003c 8:\n    друк(\"\u003c5 and \u003e8\")\nінакше:\n    друк(\"\u003e8\")\n```\n\n**Цикли**\n\n```python\nлічильник = 0\nпоки лічильник \u003c 10:\n    лічильник += 1\n    друк(лічильник)\n\nдля л до діапазон(10):\n    друк(\"Привіт, Світ!\")\n```\n\n**Функції**\n\n```python\nфункція Привіт_світ():\n    рази = ціле(ввід(\"Введіть кількість повторів: \"))\n    для i до діапазон(рази):\n        друк(\"Привіт, Світ!\")\n```\n\n**ООП**\n\n```python\nклас Тварина:\n    функція __init__(своє , прізвисько, вік):\n        своє.прізвисько = прізвисько\n        своє.вік = вік\n    функція Голос(своє):\n        викинути ПомилкаВіртуальногоМетоду(\"Метод реалізується у підкласах\")\n\nклас Собака(Тварина):\n    функція Голос(своє):\n        повернути \"Гав!\"\n\nклас Кіт(Тварина):\n    функція Голос(своє):\n        повернути \"Няв!\"\n```\n\n### Ініціалізація та деініціалізація\n\n- **Ініціалізація**: `./udav --init` або `./udav -i`\n- **Деініціалізація**: `./udav --uninit` або `./udav -u`\n\n## Приклади коду\n\n**Гра \"Вгадай число\"**\n\n```python\nотримати random\n\nфункція Гра(кількість_спроб, випадкове_число):\n    для спроба до діапазон(кількість_спроб):\n        користувацьке_число = ціле(ввід(\"Введіть число: \"))\n        якщо користувацьке_число \u003c випадкове_число:\n            друк(\"Переможне число більше\")\n        інакшеЯкщо користувацьке_число \u003e випадкове_число:\n            друк(\"Переможне число менше\")\n        інакше:\n            друк(\"Ви виграли!\")\n            повернути 0\n    друк(\"Ви програли\")\n    друк(f\"Переможне число: {випадкове_число}\")\n\nвипадкове_число = random.randrange(1, 10)\nкількість_спроб = ціле(ввід(\"Скільки ви хочете спроб:\"))\nГра(кількість_спроб, випадкове_число)\n```\n\n## Корисні посилання\n\n- **IDE для Udav**: [NUB_IDE](https://github.com/NikitaBerezhnyj/NUB_IDE)\n- **Розширення для VS Code**: [Udav Language Support](https://github.com/NikitaBerezhnyj/Udav_Language_Support_for_VS_Code)\n- **Документація**: [nub-project-docs](https://nub-project-docs.netlify.app)\n\n## Ліцензія та внесок\n\n- [Ліцензія](LICENSE) — умови використання\n- [Кодекс поведінки](CODE_OF_CONDUCT.md) — очікувана поведінка для учасників\n- [Внесок у проєкт](CONTRIBUTING.md) — як допомогти проєкту\n- [Політика безпеки](SECURITY.md) — як повідомляти про уразливості\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnikitaberezhnyj%2Fudav","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnikitaberezhnyj%2Fudav","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnikitaberezhnyj%2Fudav/lists"}