Dije "código en vivo" porque me refiero no a los archivos fuente de texto ni a las cadenas fuente, sino a las funciones partial/lambdas. (Sé de ruby1.8 árbol de traducción y C# LINQ puede hacerlo)¿Puedo obtener AST del código scala en vivo?
consideran una función parcial f:
val f = (i: Int, j: Int) => (i + j) * 2
espero que haya alguna herramienta funciona así:
getBodyAstFrom(f) //=> (Infix('*'), (Infix('+'), Id('i'), Id('j')), Val('2'))
I don' te importan las cosas semánticas (el análisis de contexto y las implicaciones son demasiado complejos e innecesarios para mí), solo necesito el árbol de sintaxis del código en vivo, ¿es posible?
Puede haber problemas con la inspección del código de otras personas, pero ¿qué pasa con mi propio código? ¿Es posible lo siguiente?
val f = AstFunction(i: Int, j: Int){(i + j) * 2}
f(5, 6) //=> 22
f.ast //=> (Infix('*'), (Infix('+'), Id('i'), Id('j')), Val('2'))
Parece a necesitar algo de la piratería en el compilador, hmmmm ...