diff --git a/scripts/print_ast/main.go b/scripts/print_ast/main.go
new file mode 100644
index 00000000..7f4f0213
--- /dev/null
+++ b/scripts/print_ast/main.go
@@ -0,0 +1,22 @@
+package main
+
+import (
+	"flag"
+	"go/ast"
+	"go/parser"
+	"go/token"
+	"log"
+)
+
+func main() {
+	var filename string
+	flag.StringVar(&filename, "f", "", "input file")
+	flag.Parse()
+
+	fset := token.NewFileSet()
+	f, err := parser.ParseFile(fset, filename, nil, parser.ParseComments)
+	if err != nil {
+		log.Fatalf("Failed to parse file %s: %s", filename, err)
+	}
+	ast.Print(fset, f)
+}