LOGOFALPROG Telegram 183
Комментарии по ку-ку
#kuku
Пришло время немного рассказать об успехах по разработке моего скриптового языка.

Я не ищу лёгких путей и мне нафиг не сдался язык без поддержки в IDE рефакторинга и дебагера, поэтому kuku изначально пишется с поддержкой Language Server Protocol. Как минимум я хочу поддержку куку в VS Code, и, скорее всего, в Vim или Neovim. Ну а потенциально во всех более-менее толковых IDE.

Не знаю, удастся ли запихать language server в браузер, но вы можете рассчитывать, что playground языка будет доступен онлайн по крайней мере с простой подсветкой синтаксиса и возможностью запустить код (хвала emscripten’у!), а также посмотреть его байт-код.

Ну так вот: по задумке kuku.exe должно будет уметь выполнять одновременно функции и парсера-компилятора, и language-сервера, и interactive mode, и декомпилятора с дебагером и всего на свете, в общем-то. И чтобы не делать одну и ту же работу дважды, парсер пишется сразу с оглядкой на LSP. В частности, например, это означает, что внутренне документы всегда представлены массивом строк, а строки соответственно последовательностью UTF-16 code unit’ов без символов конца строки. Таким образом всё позиционирование (даже у лексера) и обновление документов происходит только в этих координатах.

Я, конечно, полистал немного книгу дракона и “crafting interpretors”, но больше всего мне понравилась фраза из последней: “parsing doesn’t matter”. Действительно, можно долго зарубаться на тему математической красоты LL(1) и LR и прочих аббревиатур, но они лишь усложняют жизнь. Куку достаточно простой язык, чтобы осилить его разбор рекурсивным спуском. И даже при разборе выражений я собираюсь вручную резолвить приоритет операторов вместо того, чтобы заморачиваться с грамматиками. Чем ближе структуры AST будут отражать концепты языка, тем лучше в моём случае. В конце концов, мне ещё семантический разбор и рефакторинг поверх этого писать. А вот где действительно имеет смысл угореть по Computer Science, так это в генерации кода и оптимизациях. Но до этого пока далеко.

Ещё, кстати, появились мысли о том, как конкретно я хочу имплементировать пункт 4.2 моих design goals. Речь идёт о транзакционной памяти, но до этого совсем-совсем далеко.

Ну а пока зацените как сделаны комментарии в куку, например: https://alprog.github.io/kuku/comments.html



tgoop.com/logofalprog/183
Create:
Last Update:

Комментарии по ку-ку
#kuku
Пришло время немного рассказать об успехах по разработке моего скриптового языка.

Я не ищу лёгких путей и мне нафиг не сдался язык без поддержки в IDE рефакторинга и дебагера, поэтому kuku изначально пишется с поддержкой Language Server Protocol. Как минимум я хочу поддержку куку в VS Code, и, скорее всего, в Vim или Neovim. Ну а потенциально во всех более-менее толковых IDE.

Не знаю, удастся ли запихать language server в браузер, но вы можете рассчитывать, что playground языка будет доступен онлайн по крайней мере с простой подсветкой синтаксиса и возможностью запустить код (хвала emscripten’у!), а также посмотреть его байт-код.

Ну так вот: по задумке kuku.exe должно будет уметь выполнять одновременно функции и парсера-компилятора, и language-сервера, и interactive mode, и декомпилятора с дебагером и всего на свете, в общем-то. И чтобы не делать одну и ту же работу дважды, парсер пишется сразу с оглядкой на LSP. В частности, например, это означает, что внутренне документы всегда представлены массивом строк, а строки соответственно последовательностью UTF-16 code unit’ов без символов конца строки. Таким образом всё позиционирование (даже у лексера) и обновление документов происходит только в этих координатах.

Я, конечно, полистал немного книгу дракона и “crafting interpretors”, но больше всего мне понравилась фраза из последней: “parsing doesn’t matter”. Действительно, можно долго зарубаться на тему математической красоты LL(1) и LR и прочих аббревиатур, но они лишь усложняют жизнь. Куку достаточно простой язык, чтобы осилить его разбор рекурсивным спуском. И даже при разборе выражений я собираюсь вручную резолвить приоритет операторов вместо того, чтобы заморачиваться с грамматиками. Чем ближе структуры AST будут отражать концепты языка, тем лучше в моём случае. В конце концов, мне ещё семантический разбор и рефакторинг поверх этого писать. А вот где действительно имеет смысл угореть по Computer Science, так это в генерации кода и оптимизациях. Но до этого пока далеко.

Ещё, кстати, появились мысли о том, как конкретно я хочу имплементировать пункт 4.2 моих design goals. Речь идёт о транзакционной памяти, но до этого совсем-совсем далеко.

Ну а пока зацените как сделаны комментарии в куку, например: https://alprog.github.io/kuku/comments.html

BY Log of Alprog


Share with your friend now:
tgoop.com/logofalprog/183

View MORE
Open in Telegram


Telegram News

Date: |

There have been several contributions to the group with members posting voice notes of screaming, yelling, groaning, and wailing in different rhythms and pitches. Calling out the “degenerate” community or the crypto obsessives that engage in high-risk trading, Co-founder of NFT renting protocol Rentable World emiliano.eth shared this group on his Twitter. He wrote: “hey degen, are you stressed? Just let it out all out. Voice only tg channel for screaming”. The SUCK Channel on Telegram, with a message saying some content has been removed by the police. Photo: Telegram screenshot. “Hey degen, are you stressed? Just let it all out,” he wrote, along with a link to join the group. Over 33,000 people sent out over 1,000 doxxing messages in the group. Although the administrators tried to delete all of the messages, the posting speed was far too much for them to keep up. Public channels are public to the internet, regardless of whether or not they are subscribed. A public channel is displayed in search results and has a short address (link).
from us


Telegram Log of Alprog
FROM American