Size: a a a

Compiler Development

2020 March 26

e

e in Compiler Development
Илья Чистяков
мне кажется строки не надо подсвечивать так, а там где надо, обычно другой язык, типа json или yaml, и тут нужно уже указывать программисту как он хочет подсветить текст, потому что многие языки пересекаются по синтаксису
E-Control и в такое может.
источник

ИЧ

Илья Чистяков in Compiler Development
Yaroslav Schekin
"я сразу выкину её в окно — она бесполезна на практике". ;)
? вот в pycharm можно указывать как подсветить строки, и это прекрасно
источник

e

e in Compiler Development
Yaroslav Schekin
SELECT /* это statement */ RECURSIVE /* а это -- идентификатор, а не вовсе не ключевое слово! */
 FROM BEGIN RECURSIVE /* keyword id id */
 JOIN COMMIT ALTER /* keyword id id */
   ON AFTER > ABORT /* keyword id operator id  */

А "тупой" лексический разбор тут выдаст кучу ключевых слов, и всё.
Советую посмотреть на E-Control, и если не хватит документации и примеров, то свяжись с автором, если он еще жив.
источник

YS

Yaroslav Schekin in Compiler Development
e
Советую посмотреть на E-Control, и если не хватит документации и примеров, то свяжись с автором, если он еще жив.
Да меня же интересует теория... так можно бесконечно конкретные реализации (неизвестно чего, что обидно) "копать". :(
Т.е. меня интересует, на каких принципах там основана "Powerful and customizable highlighting.".
источник

e

e in Compiler Development
А я про что пишу — ищи теорию в документации и\или у автора.
источник

e

e in Compiler Development
e
Советую посмотреть на E-Control, и если не хватит документации и примеров, то свяжись с автором, если он еще жив.
А про примеры писал, потому что документация говно.
источник

YS

Yaroslav Schekin in Compiler Development
e
А я про что пишу — ищи теорию в документации и\или у автора.
А, понял, спасибо!
источник

АЗ

Алексей Запольский in Compiler Development
Yaroslav Schekin
И я примерно описал, что хочется подсвечивать (а не парсить, кстати — к примеру, в C макрос может раскрываться в тонны кода (и ими будет заниматься компилятор) — но к подсветке они вообще не имеют отношения).
Т.е. формально — это контекстно-зависимые грамматики, по идее, не более (если это кому-то на самом деле интересно ;) ).
Я вот тоже задумывался над языками с макросами. Но тут похоже не КЗ-грамматика. Тут после обработки макросов парсером формируется новая производная от исходной КС-грамматика.
источник

АЗ

Алексей Запольский in Compiler Development
Как-то копал внутренности NetBeans 8.2 там похоже переделанный рантайм от Antlr3 для парсинга плюсов, достаточно хорошо разбирает. Интересно что ребята из Apache будут делать? Интересно что в Eclipse? Там уже вроде серьезная поддержка DSL.
источник

АЗ

Алексей Запольский in Compiler Development
Т.е. при компиляции препроцессор заменяет препроцессоные токены. А для подсветки препроцессор должен формировать производную грамматику и парсер. ИМХО.
источник

YS

Yaroslav Schekin in Compiler Development
А я тем временем просмотрел документацию / примеры Colorer — и что характерно, там только поверхностное описание метода (очень похожего на всё те же "ужасные костыли", но теперь на XML! ;) ), а откуда он взят / почему именно такой — непонятно, релевантных ссылок на литературу нет. :(
источник

АЗ

Алексей Запольский in Compiler Development
Yaroslav Schekin
А я тем временем просмотрел документацию / примеры Colorer — и что характерно, там только поверхностное описание метода (очень похожего на всё те же "ужасные костыли", но теперь на XML! ;) ), а откуда он взят / почему именно такой — непонятно, релевантных ссылок на литературу нет. :(
Ну как я понял этот метод для сравнения с другими, как Вы и хотели. Да и в доке описаны теоретические проблемы для вашей задачи, про семантику уже словами автора, но тоже, что и Вы говорили.
источник

АЗ

Алексей Запольский in Compiler Development
Т.е. там описание грамматики в формате xml. Или я ошибаюсь?
источник

YS

Yaroslav Schekin in Compiler Development
Алексей Запольский
Т.е. там описание грамматики в формате xml. Или я ошибаюсь?
Нет, это не грамматика. Это примерно то же самое, что тут: https://t.me/CompilerDev/60967
источник

IJ

Igor 🐱 Jirkov in Compiler Development
Kakadu
У меня как-то были влажные мечты сделать для OCaml в LSP поддержку подстветки, а потом научить пакеты с DSLями экспортировать расширения подсветки, чтобы можно было управляемо подсвечивать в IDE всякие DSLи не перекомпилирую backend ideшки
А мерлин и емакс не умеют такое?
источник

VK

Vladimir Kazanov in Compiler Development
Илья Чистяков
в емаксе тоже регулярки, но как я понял не везде, питон например какой-то монструозный там
В Емаксе регулярки, в которые можно вставлять произвольный код.
источник

K

Kakadu in Compiler Development
Igor 🐱 Jirkov
А мерлин и емакс не умеют такое?
Мерлин точно нет
источник

AT

Alexander Tchitchigin in Compiler Development
Илья Чистяков
прошу прощения, вы неправильно меня поняли, просто я сам не из этой области, но пишу всякое, помню ещё во времена сталкера, когда литературы было мало, писал парсер lua для склейки модов, безумная затея)

вроде это простая задачка, вот к чему я
>  помню ещё во времена сталкера, когда литературы было мало
😂 ох, молодёжь, ох юмористы... 😂
источник

AT

Alexander Tchitchigin in Compiler Development
Yaroslav Schekin
SELECT /* это statement */ RECURSIVE /* а это -- идентификатор, а не вовсе не ключевое слово! */
 FROM BEGIN RECURSIVE /* keyword id id */
 JOIN COMMIT ALTER /* keyword id id */
   ON AFTER > ABORT /* keyword id operator id  */

А "тупой" лексический разбор тут выдаст кучу ключевых слов, и всё.
> А "тупой" лексический разбор тут выдаст кучу ключевых слов
Видимо, Вам нужно для начала выучить теорию лексического разбора чтобы не ограничиваться "тупым". 🤷‍♀️
источник

YS

Yaroslav Schekin in Compiler Development
Alexander Tchitchigin
> А "тупой" лексический разбор тут выдаст кучу ключевых слов
Видимо, Вам нужно для начала выучить теорию лексического разбора чтобы не ограничиваться "тупым". 🤷‍♀️
А  с чего Вы взяли, что я о ней ничего не знаю? И да, Вы её всю мне выучить советуете?
Что Вы конкретно предлагаете-то?
источник