Kalimehtar / russian-lang

Programming language based on russian language
MIT License
13 stars 3 forks source link

Как был написать язык на Racket? #4

Open Filipp-Druan opened 8 months ago

Filipp-Druan commented 8 months ago

Здравствуйте! Не могли бы вы рассказать о том, на что следует обратить внимание в первую очередь, если ты хочешь написать свой язык программирования на Racket? Какие могут быть ошибки? Какие есть удачные решения, которые стоит применят в первую очередь? Заранее спасибо!

Kalimehtar commented 8 months ago
  1. Прочитать https://beautifulracket.com/
  2. main.rkt и связанные модули (expand-config, language-info, ...) лучше копировать у меня или из rhombus-prototype. Нормальной документации по ним я не нашёл, копировал по образцу и редактировал. Без этого не работает в консоли: https://racket.discourse.group/t/how-to-run-repl-in-command-line-racket-with-another-language/1848/7
  3. По-хорошему, надо отделять лексер (выделение лексем) от парсера. Но я не нашёл хорошего лексера для языка на отступах, поэтому у меня всё в куче.
  4. Определись с семантикой языка. Если семантика устраивает от Racket (с динамической типизацией и сборщиком мусора), то просто делаешь перевод из своего языка в Racket. Если надо компиляция в C++ или что-то совсем необычное, смотри L++.
Filipp-Druan commented 8 months ago

Спасибо! Я хочу написать ассемблер для виртуальной машины. Виртуальная машина, для начала - SIC-1 (из одноимённой игры), потом более сложная.

Filipp-Druan commented 8 months ago

Скажите, есть ли у вас энтузиазм развивать экосистему Racket? Если да, буду очень рад, если вы напишите библиотеку для написания Telegram ботов. Чем могу - помогу.

Kalimehtar commented 8 months ago

Скажите, есть ли у вас энтузиазм развивать экосистему Racket? Если да, буду очень рад, если вы напишите библиотеку для написания Telegram ботов. Чем могу - помогу.

Нужен пример библиотеки, по образу которой желается интерфейс. Потому что если нужен просто бот, то https://github.com/profan/teleracket безо всяких библиотек сотня строк.

Filipp-Druan commented 8 months ago

Нужен пример библиотеки, по образу которой желается интерфейс

Тут нужно провести исследование. Хотелось бы разработать библиотеку, которая бы превосходила все существующие, максимально использовала бы возможности Racket.

Kalimehtar commented 8 months ago

Вот этим и можешь помочь. Библиотеку надо разрабатывать для пользователя. Хотя бы одного. Напиши, как должна использоваться, я напишу саму библиотеку.

Filipp-Druan commented 8 months ago

Напиши, как должна использоваться, я напишу саму библиотеку.

Хотите перейти в Телеграм? https://t.me/lambda_regrin Библиотеку можно разделить на два уровня API: высокоуровневый и низкоуровневый. Второй описан в документации Телеграма: https://core.telegram.org/bots/api