Size: a a a

2021 January 22

EG

Emmanuel Goldstein in pro.vim
Emmanuel Goldstein
Наоборот
Или не наоборот
Всегда путаюсь в этих двух определениях
источник

YS

Yaroslav Schekin in pro.vim
GNU/Vsevolod
Каких этих?
Texmate, (neo)vim, sublime, движок vscode (он основан на чём-то из предыдущих, я их путаю), да хоть Far colorer. ;)
источник

ПК

Паша Калугин... in pro.vim
Паша Калугин
а, понимаю
хотя нет, не понимаю: непонятно, как избежать бесконечных выражений
источник

YS

Yaroslav Schekin in pro.vim
Emmanuel Goldstein
PCRE умеют в контекстно-зависимые точно, не уверен про контекстно-свободные
Он умеет в элементы контекстно-зависимых грамматик, что не делает его полноценным CFG-движком.
То же самое относится к regexp-ам vim-а, кстати.
источник

EG

Emmanuel Goldstein in pro.vim
Yaroslav Schekin
Он умеет в элементы контекстно-зависимых грамматик, что не делает его полноценным CFG-движком.
То же самое относится к regexp-ам vim-а, кстати.
У тебя есть какой-то пруф на это?
источник

ПК

Паша Калугин... in pro.vim
Yaroslav Schekin
Да, конечно (это прямо из определения следует... я это даже преподавал когда-то, мне помнится :) ).
можно пожалуйста поподробнее, как это доказать?
источник

G

GNU/Vsevolod in pro.vim
Yaroslav Schekin
Texmate, (neo)vim, sublime, движок vscode (он основан на чём-то из предыдущих, я их путаю), да хоть Far colorer. ;)
Т.е. все они парсят файл в ast, умеют в рекавери, умеют определять яп сорца, имеют с биндинги?
источник

YS

Yaroslav Schekin in pro.vim
Emmanuel Goldstein
У тебя есть какой-то пруф на это?
Нет, стоп. Я написал неконкретно / неясно, извините.
Распознать (match) CFG (и элементы CSG) ими можно (см. https://cs.stackexchange.com/questions/4839/which-languages-do-perl-compatible-regular-expressions-recognize ) , но для подсветки нужен разбор (parsing).
источник

YS

Yaroslav Schekin in pro.vim
Паша Калугин
можно пожалуйста поподробнее, как это доказать?
А в чём тут проблема? RE эквивалентны NFA, которые эквивалентны DFA.
Это же должно быть буквально повсюду описано, хоть в wikipedia, хоть в любом учебнике.
источник

YS

Yaroslav Schekin in pro.vim
GNU/Vsevolod
Т.е. все они парсят файл в ast, умеют в рекавери, умеют определять яп сорца, имеют с биндинги?
Нет. И для подсветки синтаксиса большинство из этого не нужно (да и "определять ЯП сорца" тут откуда взялось?).

А tree-sitter умеет не парсить в AST? Умеет в recovery без AST? Умеет работать без "внешних" lexers? Его грамматики можно изменять "на лету"? Умеет выдавать и использовать аналоги symbol tables (как некоторые из перечисленных)?
источник

EG

Emmanuel Goldstein in pro.vim
У tree-sitter очень плохо с recovery
источник

G

GNU/Vsevolod in pro.vim
Yaroslav Schekin
Нет. И для подсветки синтаксиса большинство из этого не нужно (да и "определять ЯП сорца" тут откуда взялось?).

А tree-sitter умеет не парсить в AST? Умеет в recovery без AST? Умеет работать без "внешних" lexers? Его грамматики можно изменять "на лету"? Умеет выдавать и использовать аналоги symbol tables (как некоторые из перечисленных)?
Да бывает, когда есть сниппет, и неизвестен яп, нужно его подсветить. Не умеет, потому что он на асте работает, Про менять на лету не понял, это для чего? Умеет, например гитхаб вшивает файлы с лексикой прямо в сервер (чтобы с диска не читать), по крайней мере мне так разраб в дискассе сказал
источник

G

GNU/Vsevolod in pro.vim
Emmanuel Goldstein
У tree-sitter очень плохо с recovery
Может просто граммар криво написан? По презентахе Макса (который создатель) вроде все ок
источник

YS

Yaroslav Schekin in pro.vim
GNU/Vsevolod
Да бывает, когда есть сниппет, и неизвестен яп, нужно его подсветить. Не умеет, потому что он на асте работает, Про менять на лету не понял, это для чего? Умеет, например гитхаб вшивает файлы с лексикой прямо в сервер (чтобы с диска не читать), по крайней мере мне так разраб в дискассе сказал
> Не умеет, потому что он на асте работает

Т.е. "тащит" не нужную именно для этой задачи структуру.
Потенциально огромную, между прочим.

> Про менять на лету не понял, это для чего?

Для того, чтобы способ подсветки данного кода менять "на лету" (и vim это умеет, в отличие от).

> Умеет, например гитхаб вшивает файлы с лексикой прямо в сервер

"Вшивает" и "работать без lexers" — это совсем разные вещи. Т.е. чисто декларативно в нём практически используемые не контекстно-свободные конструкций без "мудрения" в lexers просто не реализуешь.
Это же так "продвинуто" — vim и то больше может в некоторых местах. ;)

> мне так разраб в дискассе сказал

"Разраб" там любит поговорить (покритиковать другие подходы, например), это да. Популярности, видно, хочется. ;)
источник

EG

Emmanuel Goldstein in pro.vim
Жирный текст не делает слова значительнее, он просто мешает читать
источник

YS

Yaroslav Schekin in pro.vim
Emmanuel Goldstein
У tree-sitter очень плохо с recovery
Да нормально у него с recovery... но это тоже требует искусства при реализации грамматик.
источник

YS

Yaroslav Schekin in pro.vim
Emmanuel Goldstein
Жирный текст не делает слова значительнее, он просто мешает читать
Вообще-то, он их выделяет (как подсветка синтаксиса, кстати). Кто-то может это не воспринимать, это другое дело.
источник

EG

Emmanuel Goldstein in pro.vim
Yaroslav Schekin
Вообще-то, он их выделяет (как подсветка синтаксиса, кстати). Кто-то может это не воспринимать, это другое дело.
Выделение слишком большого количества слов понижает читаемость
источник

EG

Emmanuel Goldstein in pro.vim
И то выделять лучше курсивом
источник

YS

Yaroslav Schekin in pro.vim
И, кстати, в vim можно за несколько минут написать свою простую подсветку (и это удобно отлаживать), и тут же использовать.
Т.е. это "дёшево и сердито".
А что с этим в neovim + tree-sitter (ну или tree-sitter + любой другой редактор, где он уже используется)?
источник