I don’t really understand why you need ASTNode as an abstract class if AST is the only thing that follows that mold. Maybe I don’t understand it or you’re going to add extra nodes, but it doesn’t seem that useful at the moment.
I decided to look at this because I saw an abstract class and wanted to check to see if it was actually needed. It didn't seem like it was to me, but possibly I'm missing something.
I don’t really understand why you need ASTNode as an abstract class if AST is the only thing that follows that mold. Maybe I don’t understand it or you’re going to add extra nodes, but it doesn’t seem that useful at the moment.