J'ai dit "code en direct" parce que je ne parle pas de fichiers source de texte ou de chaînes sources, mais de partialFunctions/lambdas. (Je sais arbre syntaxique et C# de LINQ de ruby1.8 peut le faire)Puis-je obtenir AST à partir du code Scala en direct?
considèrent une fonction partielle f:
val f = (i: Int, j: Int) => (i + j) * 2
J'espère que il y a un outil fonctionne comme ceci:
getBodyAstFrom(f) //=> (Infix('*'), (Infix('+'), Id('i'), Id('j')), Val('2'))
Je ne t attention aux choses sémantiques (l'analyse de contexte et les implicits sont trop complexes et inutiles pour moi), j'ai juste besoin de l'arbre de syntaxe du code live, est-ce possible?
Il peut y avoir des problèmes avec l'inspection du code d'autres personnes, mais qu'en est-il de mon propre code? Est-ce que les choses suivantes sont possibles?
val f = AstFunction(i: Int, j: Int){(i + j) * 2}
f(5, 6) //=> 22
f.ast //=> (Infix('*'), (Infix('+'), Id('i'), Id('j')), Val('2'))
Il semble avoir besoin d'piratant le compilateur, hmmmm ...