Skip to content

Minimalist open-source language with simple syntax for basic coding.

License

Notifications You must be signed in to change notification settings

NikitaBerezhnyj/Based

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Based

Based repository has Ukrainian 🇺🇦 and English 🇬🇧 localizations

Мова програмування Based 🇺🇦

Based icon

Мова програмування Based - це проста й незамислувата мова програмування з відкритим вихідним кодом, створена шляхом модифікації коду іншого навчального проекту під назвою py-myopl-code.

Її синтаксис навмисно зроблено максимально простим і лаконічним, без зайвих складнощів. Мета Based - повернутись до витоків програмування, та згадати як це програмувати без фреймворків та бібліотек, використовуючи тільки стандартні конструкції умовних операторів, циклів та простеньких функцій.

Через свою базовість та данину минулому, код на Based традиційно пишеться в стилі UPPERCASE.

Швидкий перехід між розділами:


Мова програмування Based

Інсталяція

Щоб запустити інтерпретатор Based, вам необхідно буде виконати один з наступних варіантів:

1. Скомпілювати інтерпретатор (це дасть вам більше можливостей у майбутньому)

2. Запустити інтерпретатор без компіляції (це також підійде, якщо ви просто хочете спробувати мову Based і не хочете встановлювати або компілювати файли)

1. Компіляція інтерпретатора

Компілювання інтерпретатора необхідно для отримання виконуваного файлу based. Для цього виконайте наступні кроки:

  1. Клонуйте репозиторій з GitHub:
git clone https://github.com/NikitaBerezhnyj/Based.git
  1. Перейдіть в теку з проектом:
cd Based/src
  1. Встановіть пакет pyinstaller:
pip install pyinstaller
  1. Запустіть компіляцію:
pyinstaller -F -n based shell.py

Після завершення компіляції в теці з проектом буде створений виконуваний файл based. Після ініціалізації цей файл можна буде використовувати для запуску програм мовою Based з будь-якої теки.

2. Запустити інтерпретатор без компіляції

Щоб запустити інтерпретатор без компіляції, виконайте наступну команду в теці з проектом:

  1. Клонуйте репозиторій з GitHub:
git clone https://github.com/NikitaBerezhnyj/Based.git
  1. Перейдіть в теку з проектом:
cd Based/src
  1. Запуск інтерпретатора
python shell.py

Ця команда запустить інтерпретатор Based в теці з проектом. Ви зможете написати і запустити програму, не компілюючи інтерпретатор.

Ініціалізація

Ініціалізація інтерпретатора Based необхідна для того, щоб можна було використовувати його з будь-якої теки на вашому комп'ютері. Для цього виконайте наступні дії:

  1. Відкрийте скомпільований файл інтерпретатора
./based
  1. Використайте наступну команду:
ІНІЦІАЛІЗАЦІЯ
  1. Завершіть роботу інтерпретатора:
ВИХІД

Після ініціалізації інтерпретатора файл based буде скопійовано в теку з іншими утилітами, що дасть можливість використовувати його для запуску програм мовою Based з будь-якої теки.

Деніціалізація

Деініціалізація інтерпретатора Based необхідна, якщо ви більше не плануєте використовувати його. Для цього виконайте наступні кроки:

  1. Відкрийте інтерпретатор
based
  1. Використайте наступну команду:
ДЕІНІЦІАЛІЗАЦІЯ
  1. Завершіть роботу інтерпретатора:
ВИХІД

Це видалить Based з теки з утилітами, але залишить його у теці з проєктом, тому ви зможете використовувати його і потім, якщо забажаєте

Синтаксис

Я намагався зробити синтаксис Based простим і зрозумілим для початківців, але при цьому потужним і гнучким для досвідчених розробників. Тож перейдімо до роботи з мовою.

Створення коментарів

# Це коментар, його інтерпретатор не бачить

Вивід тексту на екран

# Вивід звичайного тексту
ДРУК("Привіт, Світ!")

# Вивід змінної
ЗМІННА А = 10
ДРУК(А)

Оголошення змінних

# Цілочисельна змінна
ЗМІННА А = 10

# Дійсна змінна
ЗМІННА Б = 10.5

# Рядкова змінна
ЗМІННА В = "Рядок"

# Булева змінна
ЗМІННА Г = правда

Ввід користувача

# Записується рядок
ЗМІННА А = ВВІД()

# Записується число
ЗМІННА Б = ввід_числа()

Оголошення масивів

# Оголошення масиву цілих чисел
ЗМІННА А = [0, 1]

# Оголошення масиву дійсних чисел
ЗМІННА Б = [0.5, 1.001]

# Оголошення масиву рядків
ЗМІННА В = ["привіт", "світ"]

# Оголошення масиву булевих виразів
ЗМІННА Г = [правда, правда, брехня]

*Умови if (ЯКЩО), else if (ІНАКШЕ_ЯКЩО) та else (ІНАКШЕ)_

# Умова ЯКЩО запис в один рядок
ЯКЩО А < 5 ТОДІ; ДРУК("А < 5")

# Умова ЯКЩО повний запис
ЯКЩО А < 5 ТОДІ
    ДРУК("А < 5")

# Умова ЯКЩО-ІНАКШЕ запис в один рядок
ЯКЩО А < 5 ТОДІ; ДРУК("А < 5") ІНАКШЕ ДРУК("А > 8")

# Умова ЯКЩО-ІНАКШЕ повний запис
ЯКЩО А < 5 ТОДІ
    ДРУК("А < 5")
ІНАКШЕ ДРУК("А > 8")

# Умова ЯКЩО-ІНАКШЕ_ЯКЩО-ІНАКШЕ запис в один рядок
ЯКЩО А < 5 ТОДІ; ДРУК("А < 5") ІНАКШЕ_ЯКЩО А > 5 також А < 8 ТОДІ; ДРУК("А < 5 і А > 8") ІНАКШЕ ДРУК("А > 8")

# Умова ЯКЩО-ІНАКШЕ_ЯКЩО-ІНАКШЕ повний запис
ЯКЩО А < 5 ТОДІ
    ДРУК("А < 5")
ІНАКШЕ_ЯКЩО А > 5 також А < 8 ТОДІ
    ДРУК("А < 5 і А > 8")
ІНАКШЕ ДРУК("А > 8")

Оголошення циклу while (ПОКИ)

# Приклад циклу while (ПОКИ) у варіанті для одного рядка
ЗМІННА Лічильник = 0
ПОКИ Лічильник < 10 ТОДІ ЗМІННА Лічильник = Лічильник + 1; ДРУК(Лічильник)

# Приклад циклу while (ПОКИ) в розписаному варіанті
ЗМІННА Лічильник = 0
ПОКИ Лічильник < 10 ТОДІ
    ЗМІННА Лічильник = Лічильник + 1
    ДРУК(Лічильник)
КІНЕЦЬ

Оголошення циклу for (ДЛЯ)

# Приклад циклу for (ДЛЯ) у варіанті для одного рядка
ДЛЯ Лічильника = 0 ДО 10 ТОДІ ДРУК(л)

# Приклад циклу for (ДЛЯ) в розписаному варіанті
ДЛЯ Лічильника = 0 ДО 10 ТОДІ
    ДРУК("Привіт, Світ!")
КІНЕЦЬ

Оголошення функції

# Найпростіші функції, що можна записати в один рядок записуються так:
ФУНКЦІЯ Привіт_світ() -> ДРУК("Привіт, світ!")

# Функції, що не можна записати в один рядок записуються так:
ФУНКЦІЯ ПривітСвіт()
	ЗМІННА Рази = ввід_числа()
	ДРУК(Рази)
	ДЛЯ Лічильник = 0 ДО Рази ТОДІ
		ДРУК("Привіт, Світ!")
	КІНЕЦЬ
КІНЕЦЬ

Робота з сторонніми модулями

сторонній_файл.based

ФУНКЦІЯ СторонняФункція()
    ДРУК("Стороння функція працює")
КІНЕЦЬ

виконавчий_файл.based

отримати ("./сторонній_файл.based")

СторонняФункція()

Примітка! Шлях до файлу, який ми імпортуємо, потрібно вказувати залежно від файлу, що запускається, тобто якщо файли знаходяться в одній теці, то потрібно вказати просто "./назвафайлу.based", або "./назватеки/назва_файлу.based", якщо файл лежить у іншій теці.

Приклади коду

Міні гра Вгадай Число, в якій користувач вгадує число, яке програма загадала. Кількість спроб встановлюється користувачем.

ФУНКЦІЯ Гра(КількістьСпроб, ВиграшнеЧисло)
    ДЛЯ спроба = 0 ДО КількістьСпроб ТОДІ
        ДРУК("Введіть будь ласка число від 1 до 10:")
        ЗМІННА КористувацькеЧисло = ввід_числа()
        ЯКЩО КористувацькеЧисло < ВиграшнеЧисло ТОДІ
            ДРУК("Переможне число більше")
        ІНАКШЕ_ЯКЩО КористувацькеЧисло > ВиграшнеЧисло ТОДІ
            ДРУК("Переможне число менше")
        ІНАКШЕ_ЯКЩО КористувацькеЧисло == ВиграшнеЧисло ТОДІ
            ДРУК("Ви виграли!")
            ПОВЕРНУТИ 0
        ІНАКШЕ ПРОДОВЖУВАТИ
    КІНЕЦЬ
    ДРУК("Ви програли")
    ДРУК("Виграшне число: ")
    ДРУК(ВиграшнеЧисло)
КІНЕЦЬ

ДРУК("Скільки ви хочете спроб:")
ЗМІННА КількістьСпроб = ввід_числа()
Гра(КількістьСпроб, 4)

Максимально простий, консольний калькулятор, який виконує арифметичні операції. Користувач обирає операцію, вводить числа, і отримує результат. Програма запитує користувача, чи бажає він продовжити обчислення.

ФУНКЦІЯ Калькулятор()
    ДРУК("Введіть перше число: ")
    ЗМІННА А = ввід_числа()
    ДРУК("Введіть дію (0 - додавання; 1 - віднімання; 2 - множення; 3 - ділення; 4 - степінь): ")
    ЗМІННА Дія = ввід_числа()
    ДРУК("Введіть друге число: ")
    ЗМІННА Б = ввід_числа()

    ЯКЩО Дія == 0 ТОДІ
        ЗМІННА Результат = А + Б
    ІНАКШЕ_ЯКЩО Дія == 1 ТОДІ
        ЗМІННА Результат = А - Б
    ІНАКШЕ_ЯКЩО Дія == 2 ТОДІ
        ЗМІННА Результат = А * Б
    ІНАКШЕ_ЯКЩО Дія == 3 ТОДІ
        ЗМІННА Результат = А / Б
    ІНАКШЕ_ЯКЩО Дія == 4 ТОДІ
        ЗМІННА Результат = А ^ Б
    ІНАКШЕ ДРУК("Схоже я не знаю такої дії, вибачте")

    ДРУК("Результат: ")
    ДРУК(Результат)

    ДРУК("Натисніть Enter щоб продовжити...")
    ВВІД()
    КІНЕЦЬ

ЗМІННА ЧиПрацює = 1

ПОКИ ЧиПрацює > 0 ТОДІ
    ДРУК("------------------------------------------------------")
    ДРУК("-----------------Простий Калькулятор------------------")
    ДРУК("------------------------------------------------------")
    ДРУК("-Для використання калькулятора виберіть одну з команд-")
    ДРУК("------------------------------------------------------")
    ДРУК("[0 - Обчислити вираз]")
    ДРУК("[1 - Вихід]")
    ДРУК("------------------------------------------------------")
    ДРУК("")
    ДРУК("Ваш вибір: ")
    ЗМІННА ВвідКористувача = ввід_числа()
    ЯКЩО ВвідКористувача == 0 ТОДІ
        Калькулятор()
    ІНАКШЕ_ЯКЩО ВвідКористувача == 1 ТОДІ
        ЗМІННА ЧиПрацює = 0
        ПОВЕРНУТИ 0
    ІНАКШЕ ДРУК("Не вірне число")
    ДРУК("")
    КІНЕЦЬ

Команди інтерпретатора

  • ДОПОМОГА - показує всі доступні команди для терміналу інтерпретатора та базовий синтаксис мови

  • ЗАПУСК - запускає файл .based (приклад використання: ЗАПУСК("приклад.based"))

  • ЦТ - ця тека. Показує шлях до поточної теки

  • ЛФ - лист файлів. Показує вміст поточної теки

  • ЗТ - змінити теку. Змінює поточну теку

  • СФ - створити файл. Створює файл у поточній теці (приклад використання: СФ приклад.txt, якщо розширення не вказане, то воно буде за замовчуванням встановлене, як .based)

  • СТ - створити теку. Створює теку у поточній (приклад використання: СТ тестоватека_)

  • ОЧИСТИТИ - очищує термінал інтерпретатора

  • ВИХІД - закриває інтерпретатор

  • ВЕРСІЯ - показує поточну версію Based, що встановлена на вашому ПК

  • БАЗА - виводить основну інформацію про стан Based

Корисні посилання

Власне IDE: https://github.com/NikitaBerezhnyj/NUB_IDE

Розширення для VS code: https://github.com/NikitaBerezhnyj/Based_Language_Support_for_VS_Code

Документація по проєкту: https://nub-project-docs.netlify.app


Programming language Based 🇬🇧

Based icon

Programming language Based is a simple and uncomplicated open source programming language created by modifying the code of another educational project called [py-myopl-code] (https://github.com/davidcallanan/py-myopl-code).

Its syntax is deliberately made as simple and concise as possible, without unnecessary complexity. The goal of Based is to return to the roots of programming and to remember how to program without frameworks and libraries, using only standard constructs of conditional statements, loops, and simple functions.

Due to its basic nature and tribute to the past, code in Based is traditionally written in the PascalCase style.

Quick transition between sections:


Programming language Based

Installation

To start the Based interpreter, you will need to do one of the following:

1. Compile the interpreter (this will give you more options in the future)

2. Run the interpreter without compiling (this is also suitable if you just want to try the Based language and do not want to install or compile files)

1. Compile the interpreter.

Compiling the interpreter is necessary to get the based executable. To do this, follow these steps:

  1. Clone the repository from GitHub:
git clone https://github.com/NikitaBerezhnyj/Based.git
  1. Change to the project folder:
cd Based/'Programming Language'/src
  1. Install the package pyinstaller:
pip install pyinstaller
  1. Run the compilation:
pyinstaller -F -n based shell.py

After compilation is complete, the based executable file will be created in the project folder. After initialization, this file can be used to run programs in the Based language from any folder.

2. Run the interpreter without compilation

To run the interpreter without compiling, run the following command in the project folder:

  1. Clone the repository from GitHub:
git clone https://github.com/NikitaBerezhnyj/Based.git
  1. Change to the project folder:
cd Based/'Programming Language'/src
  1. Run the interpreter
python shell.py

This command will start the Based interpreter in the project folder. You can write and run the program without compiling the interpreter.

Initialization

Initializing the Based interpreter is necessary to be able to use it from any folder on your computer. To do this, do the following:

  1. Open the compiled interpreter file
./based
  1. Use the following command:
ІНІЦІАЛІЗАЦІЯ
  1. Shut down the interpreter:
ВИХІД

After the interpreter is initialized, the based file will be copied to the folder with other utilities, which will make it possible to use it to run programs in the Based language from any folder.

Denialization

You need to deinitialize the Based interpreter if you no longer plan to use it. To do this, follow these steps:

  1. Open the interpreter
based
  1. Use the following command:
ДЕІНІЦІАЛІЗАЦІЯ
  1. Shut down the interpreter:
ВИХІД

This will remove Based from the utilities folder, but leave it in the project folder, so you can use it later if you want to.

Syntax.

I've tried to make the Based syntax simple and easy to understand for beginners, but powerful and flexible for advanced developers. So let's get down to business with the language.

Creating comments

# This is a comment, the interpreter does not see it

Display text on the screen

# Plain text output
ДРУК("Привіт, Світ!")

# Outputting a variable
ЗМІННА А = 10
ДРУК(А)

Declaration of variables

# Integer variable
ЗМІННА А = 10

# Float variable
ЗМІННА Б = 10.5

# String variable
ЗМІННА В = "Рядок"

# Boolean variable
ЗМІННА Г = правда

User input

# The string is written
ЗМІННА А = ВВІД()

# The number is written
ЗМІННА Б = ввід_числа()

Оголошення масивів

# Declaring an array of integers
ЗМІННА А = [0, 1]

# Declaring an array of real numbers
ЗМІННА Б = [0.5, 1.001]

# Declaring an array of strings
ЗМІННА В = ["привіт", "світ"]

# Declaring an array of Boolean expressions
ЗМІННА Г = [правда, правда, брехня]

If, else if, and else conditions

# Condition if the record is in one line
ЯКЩО А < 5 ТОДІ; ДРУК("А < 5")

# Condition if full record
ЯКЩО А < 5 ТОДІ
    ДРУК("А < 5")

# If-else condition record in one line
ЯКЩО А < 5 ТОДІ; ДРУК("А < 5")  ІНАКШЕ ДРУК("А > 8")

# If-else condition full record
ЯКЩО А < 5 ТОДІ
    ДРУК("А < 5")
ІНАКШЕ ДРУК("А > 8")

# If-else_if-else record in one line
ЯКЩО А < 5 ТОДІ; ДРУК("А < 5") ІНАКШЕ_ЯКЩО А > 5 також А < 8 ТОДІ; ДРУК("А < 5 і А > 8") ІНАКШЕ ДРУК("А > 8")

# Condition if_elif_else full record
ЯКЩО А < 5 ТОДІ
    ДРУК("А < 5")
ІНАКШЕ_ЯКЩО А > 5 також А < 8 ТОДІ
    ДРУК("А < 5 і А > 8")
ІНАКШЕ ДРУК("А > 8")

Declaring a while loop

# An example of a while loop in a single-line version
ЗМІННА Лічильник = 0
ПОКИ Лічильник < 10 ТОДІ ЗМІННА Лічильник = Лічильник + 1; ДРУК(Лічильник)

# An example of a while loop in a scheduled version
ЗМІННА Лічильник = 0
ПОКИ Лічильник < 10 ТОДІ
    ЗМІННА Лічильник = Лічильник + 1
    ДРУК(Лічильник)
КІНЕЦЬ

*Declaring a for loop

# An example of a for loop in the version for one line
ДЛЯ Лічильника = 0 ДО 10 ТОДІ ДРУК(л)

# An example of a for loop in the painted version
ДЛЯ Лічильника = 0 ДО 10 ТОДІ
    ДРУК("Привіт, Світ!")
КІНЕЦЬ

Declaring a function

# The simplest functions that can be written in one line are written like this:
ФУНКЦІЯ Привіт_світ() -> ДРУК("Привіт, світ!")

# Functions that cannot be written in one line are written like this:
ФУНКЦІЯ ПривітСвіт()
	ЗМІННА Рази = ввід_числа()
	ДРУК(Рази)
	ДЛЯ Лічильник = 0 ДО Рази ТОДІ
		ДРУК("Привіт, Світ!")
	КІНЕЦЬ
КІНЕЦЬ

Code examples

Guess the Number mini-game in which the user guesses the number that the program has guessed. The number of attempts is set by the user.

ФУНКЦІЯ Гра(КількістьСпроб, ВиграшнеЧисло)
    ДЛЯ спроба = 0 ДО КількістьСпроб ТОДІ
        ДРУК("Введіть будь ласка число від 1 до 10:")
        ЗМІННА КористувацькеЧисло = ввід_числа()
        ЯКЩО КористувацькеЧисло < ВиграшнеЧисло ТОДІ
            ДРУК("Переможне число більше")
        ІНАКШЕ_ЯКЩО КористувацькеЧисло > ВиграшнеЧисло ТОДІ
            ДРУК("Переможне число менше")
        ІНАКШЕ_ЯКЩО КористувацькеЧисло == ВиграшнеЧисло ТОДІ
            ДРУК("Ви виграли!")
            ПОВЕРНУТИ 0
        ІНАКШЕ ПРОДОВЖУВАТИ
    КІНЕЦЬ
    ДРУК("Ви програли")
    ДРУК("Виграшне число: ")
    ДРУК(ВиграшнеЧисло)
КІНЕЦЬ

ДРУК("Скільки ви хочете спроб:")
ЗМІННА КількістьСпроб = ввід_числа()
Гра(КількістьСпроб, 4)

The simplest possible console calculator that performs arithmetic operations. The user selects an operation, enters numbers, and gets the result. The program asks the user if he or she wants to continue the calculation.

ФУНКЦІЯ Калькулятор()
    ДРУК("Введіть перше число: ")
    ЗМІННА А = ввід_числа()
    ДРУК("Введіть дію (0 - додавання; 1 - віднімання; 2 - множення; 3 - ділення; 4 - степінь): ")
    ЗМІННА Дія = ввід_числа()
    ДРУК("Введіть друге число: ")
    ЗМІННА Б = ввід_числа()

    ЯКЩО Дія == 0 ТОДІ
        ЗМІННА Результат = А + Б
    ІНАКШЕ_ЯКЩО Дія == 1 ТОДІ
        ЗМІННА Результат = А - Б
    ІНАКШЕ_ЯКЩО Дія == 2 ТОДІ
        ЗМІННА Результат = А * Б
    ІНАКШЕ_ЯКЩО Дія == 3 ТОДІ
        ЗМІННА Результат = А / Б
    ІНАКШЕ_ЯКЩО Дія == 4 ТОДІ
        ЗМІННА Результат = А ^ Б
    ІНАКШЕ ДРУК("Схоже я не знаю такої дії, вибачте")

    ДРУК("Результат: ")
    ДРУК(Результат)

    ДРУК("Натисніть Enter щоб продовжити...")
    ВВІД()
    КІНЕЦЬ

ЗМІННА ЧиПрацює = 1

ПОКИ ЧиПрацює > 0 ТОДІ
    ДРУК("------------------------------------------------------")
    ДРУК("-----------------Простий Калькулятор------------------")
    ДРУК("------------------------------------------------------")
    ДРУК("-Для використання калькулятора виберіть одну з команд-")
    ДРУК("------------------------------------------------------")
    ДРУК("[0 - Обчислити вираз]")
    ДРУК("[1 - Вихід]")
    ДРУК("------------------------------------------------------")
    ДРУК("")
    ДРУК("Ваш вибір: ")
    ЗМІННА ВвідКористувача = ввід_числа()
    ЯКЩО ВвідКористувача == 0 ТОДІ
        Калькулятор()
    ІНАКШЕ_ЯКЩО ВвідКористувача == 1 ТОДІ
        ЗМІННА ЧиПрацює = 0
        ПОВЕРНУТИ 0
    ІНАКШЕ ДРУК("Не вірне число")
    ДРУК("")
    КІНЕЦЬ

Interpreter commands

  • ДОПОМОГА - shows all available commands for the interpreter terminal and the basic syntax of the language

  • ЗАПУСК - runs the .based file (example of use: ЗАПУСК("приклад.based"))

  • ЦТ - this folder. Shows the path to the current folder

  • ЛФ - a list of files. Shows the contents of the current folder

  • ЗТ - change folder. Changes the current folder

  • СФ - create file. Creates a file in the current folder (example of use: СФ приклад.txt, if the extension is not specified, it will be set to .based by default)

  • ст - create folder. Creates a folder in the current one (example of use: СТ тестоватека_)

  • ОЧИСТИТИ - clears the interpreter terminal

  • ВИХІД - closes the interpreter

  • ВЕРСІЯ - shows the current version of Based installed on your PC

  • БАЗА - displays basic information about the state of the Based

Useful links

Custom IDE: https://github.com/NikitaBerezhnyj/NUB_IDE

Extensions for VS code: https://github.com/NikitaBerezhnyj/Based_Language_Support_for_VS_Code

Project documentation: https://nub-project-docs.netlify.app

About

Minimalist open-source language with simple syntax for basic coding.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages