It seems like a nice pattern. For popularizing this to Java programmers, I think the name "parameterized factory" might work better. Parameterizing a factory for nodes of an AST by the type of node returned (which might not be an AST node at all if it's fully evaluated) seems like a nice idea.
I think that over time, as you add new node types, you'd end up with lots of interface types, so you'd have to go back and clean them up after extending the language. But it will make the transition easier.
Also, real languages have multiple node types (expressions, statements, types, etc) that aren't interchangeable,so that might result in lots of type variables.
I think that over time, as you add new node types, you'd end up with lots of interface types, so you'd have to go back and clean them up after extending the language. But it will make the transition easier.
Also, real languages have multiple node types (expressions, statements, types, etc) that aren't interchangeable,so that might result in lots of type variables.