remove ast type.

AST has eval method instead.
diff --git a/eval.go b/eval.go
index dd920fc..4381774 100644
--- a/eval.go
+++ b/eval.go
@@ -146,12 +146,7 @@
 }
 
 func (ev *Evaluator) eval(ast AST) {
-	switch ast.typ() {
-	case ASTAssign:
-		ev.evalAssign(ast.(*AssignAST))
-	case ASTRule:
-		ev.evalRule(ast.(*RuleAST))
-	}
+	ast.eval(ev)
 }
 
 func Eval(mk Makefile) *EvalResult {