I think it is great that you are into this kind of stuff. I am as well, as I find it one of the most interesting things to do. "The AST" is subjective, however. We know it is a tree data structure, but most compilers implemented it differently. Also, AST generation is typically derived from the parsing stage, then the AST is taken to be compiled. I think you should look into GNU Bison.