185 похожих чатов

Somewhat related: а есть языки программирования которые в стандартной библиотеке

дают фичи для написания кастомных рефакторингов на уровне cst/ast? чтобы не на уровне компиляции код трансформировать как в макросах, а отдельными проходами по репозиторию исходников

15 ответов

20 просмотров

Python, Java... C# maybe?

все зависит от требуемоего качества удобства любой язык, где есть компилятор написанный на этом же языке и поставляется как либа ghc например, но там уже проверенно exactprint очень геморный

В дотнете есть Roslyn Analyzers и Roslyn Code Generators, возможно это близкое к тому что вы хотите

Andrew- Автор вопроса
кана
все зависит от требуемоего качества удобства любо...

ну вот хочется поудобнее чем брать сорцы компилятора и пытаться делать что-то там потому что если структуры ast не задуманы под сериализацию то добавлять такое поверху будет очень больно

Andrew- Автор вопроса
кана
все зависит от требуемоего качества удобства любо...

я возился с ghc-exactprint несколько дней, так и не понял как им пользоваться и на вопросы мои на дискурсе никто так и не ответил так что с моей тз уровень юзабельности там низкий очень

Andrew- Автор вопроса
Alexander Chichigin
Python, Java... C# maybe?

у джавы в стандартной поставке можно было процессорами аннотаций код парсить и плагинами для джавадока в последний раз когда я на нее смотрел, в обоих случаях прямо писать преобразования так как хочется делать в рефакторингах не было там для процессоров аннотаций была даже либа специальная чтобы код генерировать не конкатенацией строчек от Jake Wharton (кажется), не думаю что она поддерживает кейс именно модификации существующих исходников а не генерацию с нуля

Andrew
я возился с ghc-exactprint несколько дней, так и н...

это правда, в команде hls то же мнение

Andrew
у джавы в стандартной поставке можно было процессо...

> прямо писать преобразования так как хочется делать в рефакторингах Это как? Что значит "прямо"?

C Intermediate Language

Andrew- Автор вопроса
卜根
C Intermediate Language

пока не очень понятно что за зверь такой в частности на гитхабе сломана ссылка на туториал

Andrew- Автор вопроса
Alexander Chichigin
> прямо писать преобразования так как хочется дела...

значит что если я захочу написать что-то простое (допустим, фолдинг констант на уровне сорцов) то для этого нужно будет писать кучу кода

Andrew
пока не очень понятно что за зверь такой в частно...

Его изучают на некоторых курсах. На его основе сделаны FRAMA-C, CCured и Continuation Passing C

Andrew
значит что если я захочу написать что-то простое (...

Так нужно или не нужно писать кучу кода? Вы спрашивали про "мейнстримные" императивные языки — как Вы себе представляете нужный код на таком языке?

Andrew- Автор вопроса
Andrew
вообще не упоминал императивные языки

А, это в другом треде было, извините...

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
2
Карта сайта