Size: a a a

2021 February 26

AY

Anton Yessaulenko in fprog_spb
# Header Hello, world!

Some text

// ссылка <url> <label>
=> https://example.com An example

> A quote

* List
источник

AY

Anton Yessaulenko in fprog_spb
ещё есть блок кода (```)
источник

AY

Anton Yessaulenko in fprog_spb
перенос строки это конец выражения
источник

K

Kir in fprog_spb
А парсить чем? Тут вроде бы, и регулярки справятся, но у них error reports отсутствуют как класс
источник

Y

Yuuri in fprog_spb
На JS, небось, и парсер-комбинаторы есть
источник

A

Aleksey @cheatex in fprog_spb
Для первого этапа не очень нужен именно парсер и AST - они работают для валидных входов, а ты хочешь делать подсказки к невалидным. Я бы ограничился токенайзером и набором эвристик. Типа если строка начинается с токена ``
но не заканчивается им - то подсказать дописать в конец ``.
А для генератора разметки уже можно собирать дерево.
источник

AT

Alexander Tchitchigi... in fprog_spb
Anton Yessaulenko
ой, лучше не спрашивай
я планирую прототип накидать на js :)
источник

JS

Jerzy Syrowiecki in fprog_spb
Kir
Range у каждого узла.

Если все узлы однотипные то Cofree (Sum layers) (Product metadata) ... а, стоп. На каком языке пишешь?
Range — это SrcSpan?
источник

K

Kir in fprog_spb
Ага
источник

AT

Alexander Tchitchigi... in fprog_spb
Anton Yessaulenko
# Header Hello, world!

Some text

// ссылка <url> <label>
=> https://example.com An example

> A quote

* List
Gemini что ли?
источник

K

Kir in fprog_spb
Aleksey @cheatex
Для первого этапа не очень нужен именно парсер и AST - они работают для валидных входов, а ты хочешь делать подсказки к невалидным. Я бы ограничился токенайзером и набором эвристик. Типа если строка начинается с токена ``
но не заканчивается им - то подсказать дописать в конец ``.
А для генератора разметки уже можно собирать дерево.
Вот как раз на парсеркомбинаторах и будет удобно. Но задолбаешься отписывать escapes
источник

A

Aleksey @cheatex in fprog_spb
Kir
Вот как раз на парсеркомбинаторах и будет удобно. Но задолбаешься отписывать escapes
Он вернёт первую встреченную ошибку, не?
источник

AT

Alexander Tchitchigi... in fprog_spb
Я этот Gemini совершенно "на коленке" попарсил: https://github.com/gabriel-fallen/rendezvous/blob/main/lib/gemini.dart
источник

AY

Anton Yessaulenko in fprog_spb
Alexander Tchitchigin
Gemini что ли?
он самый
источник

AT

Alexander Tchitchigi... in fprog_spb
Anton Yessaulenko
он самый
Так там парсить нечего by design. Даже регулярки не нужны — простейший КА, написанный руками.
источник

AY

Anton Yessaulenko in fprog_spb
но ведь так не интересно
источник

AT

Alexander Tchitchigi... in fprog_spb
См. выше. Можете брать и портировать с Dart на JS. 😃
источник

AT

Alexander Tchitchigi... in fprog_spb
Anton Yessaulenko
но ведь так не интересно
Тогда возьмите формат посложнее. 🤷‍♀️
источник

AY

Anton Yessaulenko in fprog_spb
тогда слишком сложно )

да, вообще есть готовая либа для gemini text
https://github.com/wooorm/dioscuri

но я решил сам попарсить, так как, вы правильно заметили что это очень простая задача

ну и дальше решил это сделать правильно
источник

AT

Alexander Tchitchigi... in fprog_spb
Anton Yessaulenko
тогда слишком сложно )

да, вообще есть готовая либа для gemini text
https://github.com/wooorm/dioscuri

но я решил сам попарсить, так как, вы правильно заметили что это очень простая задача

ну и дальше решил это сделать правильно
Если хотите научиться — то с рукописного КА и начинайте. Дальше проще разобраться будет.
источник