Почему программистам "настоятельно рекомендуется не заниматься синтаксическим анализом преобразований"?
Согласно документации erl_id_trans:
Программистам настоятельно рекомендуется не участвовать в преобразованиях синтаксического анализа и не предоставляется поддержка для возникающих проблем.
Почему программистам настоятельно рекомендуется не использовать parse_transform/2? Не будет ли это поддерживаться в будущем? Кроме parse_transform/2, есть ли механизм для вставки кода (модификации байт-кода во время выполнения) или изменения исходного кода перед его компиляцией?
1 ответ
Одна причина, которую я могу себе представить, заключается в том, что они не хотят исправлять формат дерева синтаксиса.
Так что, если вы используете Parse Teansforms, и они ломаются из-за новой версии Erlang, вы не можете жаловаться.
Приложение: в комментариях возник вопрос о других способах манипулирования исходным или байт-кодом Erlang
Для полуавтоматического рефакторинга кода есть Wrangler
У вас есть доступ к препроцессору, токенизатору и парсеру Erlang, например, с указанием синтаксических деревьев вашей программы.
Для легкого и портативного манипулирования абстрактными формами (что вы получаете из анализатора или даже лучевых файлов) есть синтаксис_tools
Для манипулирования лучами-файлами есть beam_lib