Parsing Go Programs with Type Inference

I wrote an example program to demonstrate how a Go program can parse itself into an AST (abstract syntax tree) and infer types of nodes (expressions) in this tree.