Ich sagte "Live-Code", weil ich meine nicht von Text Quelldateien oder Quellstrings, sondern von PartialFunctions/Lambdas. (Ich weiß ruby1.8 der Syntaxbaum und C# Linq es tun kann)Kann ich AST von Live Scala Code bekommen?
eine Partielle Funktion f betrachten:
val f = (i: Int, j: Int) => (i + j) * 2
Ich hoffe, dass es einige Tool funktioniert wie folgt:
getBodyAstFrom(f) //=> (Infix('*'), (Infix('+'), Id('i'), Id('j')), Val('2'))
I don‘ Ich kümmere mich um die semantischen Dinge (Kontextanalyse und implicits sind zu komplex und unnötig für mich), ich brauche nur den Syntaxbaum aus Live-Code, ist das möglich?
Möglicherweise gibt es Probleme bei der Überprüfung des Codes anderer Personen, aber was ist mit meinem eigenen Code? Sind folgende Dinge möglich?
val f = AstFunction(i: Int, j: Int){(i + j) * 2}
f(5, 6) //=> 22
f.ast //=> (Infix('*'), (Infix('+'), Id('i'), Id('j')), Val('2'))
Es scheint, nennen einige Hacker in den Compiler, hmmmm ...