Почему программистам "настоятельно рекомендуется не заниматься синтаксическим анализом преобразований"?

Согласно документации erl_id_trans:

Программистам настоятельно рекомендуется не участвовать в преобразованиях синтаксического анализа и не предоставляется поддержка для возникающих проблем.

Почему программистам настоятельно рекомендуется не использовать parse_transform/2? Не будет ли это поддерживаться в будущем? Кроме parse_transform/2, есть ли механизм для вставки кода (модификации байт-кода во время выполнения) или изменения исходного кода перед его компиляцией?

1 ответ

Решение

Одна причина, которую я могу себе представить, заключается в том, что они не хотят исправлять формат дерева синтаксиса.

Так что, если вы используете Parse Teansforms, и они ломаются из-за новой версии Erlang, вы не можете жаловаться.

Приложение: в комментариях возник вопрос о других способах манипулирования исходным или байт-кодом Erlang

  • Для полуавтоматического рефакторинга кода есть Wrangler

  • У вас есть доступ к препроцессору, токенизатору и парсеру Erlang, например, с указанием синтаксических деревьев вашей программы.

  • Для легкого и портативного манипулирования абстрактными формами (что вы получаете из анализатора или даже лучевых файлов) есть синтаксис_tools

  • Для манипулирования лучами-файлами есть beam_lib

Другие вопросы по тегам