1

Тема: Вперед у світле майбутнє

Щойно закінчив писати ядро своєї мови програмування.
Розуміє такий код.

змінна = 1;

while(змінна < 10) {
  print змінна;
  змінна = змінна + 1;
}

function МояФункція() {
  print "Ось вона лепота!";
}

МояФункція();

Якщо перевизначити ключові слова, то можна написати всю програму рідною мовою.
Просто хвалюся.
Написано на php. LR(1) парсер, AST - все по науці.

Подякували: PRY, taburyak, ostap34PHP, koala, bunyk, NaharD, Eff1c7

2

Re: Вперед у світле майбутнє

А зробити онлайн інтерпритатор?

3

Re: Вперед у світле майбутнє

А "while", "print"??? Вже б все поміняти на рідненьке.

Подякували: cppj1

4 Востаннє редагувалося mikeos (29.12.2018 16:33:33)

Re: Вперед у світле майбутнє

Колись давно викладач Петрів з львівського універу створив таку штуку Алго
https://subject.com.ua/textbook/informa … las/5.html

Там можна було кодити укр мовою

Подякували: leofun011

5

Re: Вперед у світле майбутнє

taburyak написав:

А "while", "print"??? Вже б все поміняти на рідненьке.

mikeos написав:

... Алго ... Там можна було кодити укр мовою

Як на мене, використовувати кирилицю в ключових словах в мовах програмування - це ганебне збочення.

Пам'ятаю як в офісі на компи хтось поставив російську версію MS Excel, неможливо було набирати імена стандартних функцій, бо серед розробників-локалізаторів якийсь ідіот вирішив перекласти їх на російську.

Подякували: PRY, 221VOLT, ostap34PHP3

6

Re: Вперед у світле майбутнє

Згадалось
https://upload.wikimedia.org/wikipedia/commons/8/8d/RAPIRA_example.png

Подякували: leofun011

7

Re: Вперед у світле майбутнє

Як на мене, використовувати кирилицю в ключових словах в мовах програмування - це ганебне збочення.

Це було створено тільки в навчальних цілях, напевно щоб студентам було краще зрозуміти значення операторів, особливо для тих що не вчили англійську. Ну і це були далекі двохтисячні ))

Подякували: leofun011

8 Востаннє редагувалося P.Y. (29.12.2018 20:46:13)

Re: Вперед у світле майбутнє

leofun01 написав:
taburyak написав:

А "while", "print"??? Вже б все поміняти на рідненьке.

mikeos написав:

... Алго ... Там можна було кодити укр мовою

Як на мене, використовувати кирилицю в ключових словах в мовах програмування - це ганебне збочення.

Пам'ятаю як в офісі на компи хтось поставив російську версію MS Excel, неможливо було набирати імена стандартних функцій, бо серед розробників-локалізаторів якийсь ідіот вирішив перекласти їх на російську.

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

Подякували: leofun01, taburyak2

9

Re: Вперед у світле майбутнє

kostoprav666 написав:

Щойно закінчив писати ядро своєї мови програмування.
Розуміє такий код.

змінна = 1;

while(змінна < 10) {
  print змінна;
  змінна = змінна + 1;
}

function МояФункція() {
  print "Ось вона лепота!";
}

МояФункція();

Якщо перевизначити ключові слова, то можна написати всю програму рідною мовою.
Просто хвалюся.
Написано на php. LR(1) парсер, AST - все по науці.

десь можна глянути на список запланованих фіч?

10

Re: Вперед у світле майбутнє

Таке вже є, для цього не треба писати інтерпретатори і т.д. Щоправда, не зовсім таке, але-ж не треба створювати свого. Качаєте середовище Microsoft Visual Studio C++ (тільки він підтримує Юнікод та українську мову в функціях).
А далі просто пишете програму, ну, наприклад

#include <stdio.h>
#include <conio.h>
typedef int цілий;
typedef float плаваючий;
typedef char символ;
#define головний main
#define повернути return
#define якщо if
#define інакше else
#define цикл for
#define цикл2 while
цілий функція(цілий а, цілий б)
{
якщо(а > б) повернути а;
інакше повернути б;
}
цілий головний()
{
цілий а=0;
цілий б=1;
цілий в=функція(а, б);
повернути в;
}

Це придумали "русские" для написання "по-русски" своїх програм, тому це плагіат. А посилання я наведу на російський сайт, не ображайтесь. На цьому сайті є нецензурна лексика, але іншого сайту просто немає, де описується, як переробити C++:

Прихований текст

18+

Прихований текст
Подякували: taburyak1

11

Re: Вперед у світле майбутнє

Бажання розробляти програми і мови програмування рідною мовою зазвичай швидко зникає після запрошення до німецького проекту (якщо, звісно, ви не розмовляєте німецькою).

Подякували: 221VOLT, leofun012

12 Востаннє редагувалося kostoprav666 (06.03.2019 08:42:56)

Re: Вперед у світле майбутнє

Ось так виглядає рішення задачі "Ханойська вежа".

// Даны три стержня, на один из которых нанизаны несколько колец, причём кольца отличаются размером и лежат меньшее на большем.
// Задача состоит в том, чтобы перенести пирамиду из колец за наименьшее число ходов на другой стержень.
// За один раз разрешается переносить только одно кольцо, причём нельзя класть большее кольцо на меньшее. 

КоличествоКолец = 4;

function Перенос(количество, откуда, куда) {
    if(количество <> 1) {
        Перенос(количество - 1, откуда, 6 - откуда - куда);
    }
    print "Диск ", количество, " перенести с оси ", откуда, " на ось ", куда, chr(13), chr(10);
    if(количество <> 1) {
        Перенос(количество - 1, 6 - откуда - куда, куда);
    }
}

Перенос(КоличествоКолец, 1, 3);

Проект заморожений.
В процесі реалізації проекту був написаний свій LR (1) парсер. Ось це дійсно хороша річ вийшла.
А мова просто погратися ...

13

Re: Вперед у світле майбутнє

Виправіть порушення п.1.1 Правил.

14

Re: Вперед у світле майбутнє

Ось таку конструкцію мова коректно обробляє.

{
    set synonym "друкувати" for "print";
    set synonym "вивід" for "друкувати";
    set synonym "цикл" for "while";
    set synonym "початок" for "start";
    set synonym "поступ" for "step";
}

while (Змінна в циклі < 10) start (Змінна в циклі = 1;) step (Змінна в циклі = Змінна в циклі + 1;) {
    Друкувати Змінна в циклі; Вивід;
}

Цикл (Змінна в циклі < 10) Початок (Змінна в циклі = 1;) Поступ (Змінна в циклі = Змінна в циклі + 1;) {
    Друкувати Змінна в циклі; Вивід;
}

Як вам таке?

15 Востаннє редагувалося 221VOLT (03.08.2019 19:38:09)

Re: Вперед у світле майбутнє

kostoprav666 написав:

Як вам таке?

яке таке?
немає ж на що дивитись!

спочатку давайте посилання на гітхаб репозиторій,
і уже після того запитання "як вам таке" ))

upd. якщо репозиторія немає, і є тільки купа повідомлень в стилі "дивіться, я відкрив DEFINE true false" -- тим більше, на що ж тут дивитись? *SCRATCH*

Подякували: leofun01, ostap34PHP2

16

Re: Вперед у світле майбутнє

Це не мова, а геморой з постійной зміной розкладки клавіатури. за таке руки треба повідрубувати. ось мова:

;;; це лише ескіз мови

функ привіт (ім'я)
  вивести("Привіт %1", им'я)
кнц

функ табл1 (арг)
  Якщо (арг більшза 0) 
    поч
      вивести("%1", змн1)
      табл1(++арг)
    кнц
кнц

функ табл2 (арг)
  Доки (арг більшза 0) 
    поч
      вивести("%1", змн1)
      ++арг
    кнц
кнц

функ табл2 (арг)
  для (і := 0; і меншза арг; і++) 
    поч
      вивести("%1", змн1)
      ++арг
    кнц
кнц

мас = (1, 2, 3, 4)
стр = "строка"

17

Re: Вперед у світле майбутнє

Я не планую викладати код програми. Максимум - це онлайн інтерпретатор. Але це в майбутньому. Поки що граюся з граматикою.
В останньому пості є непогані ідеї. Врахую.

18

Re: Вперед у світле майбутнє

Раџу називати дїӧслівні дїӥ дїӧсловами наказового способу, для прикладу до попереднӧго:

виводь("Привіт %1", імє)

19

Re: Вперед у світле майбутнє

Факуніане, це ви тут граєтесь? Я теж створив нову мову програмування. Yoptascript.

го (гыы i нахуй i внатуре 0 нахуй iплюсуюНа) поясниЗаБазар()
Подякували: bvn, 221VOLT, cheappi3863

20

Re: Вперед у світле майбутнє

kostoprav666 написав:

Я не планую викладати код програми. Максимум - це онлайн інтерпретатор. Але це в майбутньому. Поки що граюся з граматикою.
В останньому пості є непогані ідеї. Врахую.

тобто ви розпочали вивчати, як пишуться лексери та парсери?
у такому випадку я все ще не доганяю -- до чого тут DEFINE true false ?

Подякували: leofun011