В сети есть несколько ресурсов , которые поучительны в написании плагинов компилятора Scala, которые сопоставляются с шаблоном по коду, но они не помогают в создании кода деревья символов). С чего мне начать выяснять, как это сделать? (Если есть более простой способ, чем создавать деревья символов вручную, мне также будет интересно.)
Например, я хотел бы написать плагин, который заменяет некоторый код простым AST для этого выражения, где переменные (извлеченные из исходного программного кода) могут быть любого типа:
"" + hello + ", " + world + "!"
Я понимаю, что это может быть сложно из-за бокса и toString
, например. если
hello
был объектом, а world
был целым, это действительно должно быть
что-то вроде:
"".+(hello.toString().+(", ".+(new Integer(world).toString().+("!"))))