Parse complex rules
diff --git a/eval.go b/eval.go
index 33fb00b..75009a8 100644
--- a/eval.go
+++ b/eval.go
@@ -174,7 +174,9 @@
 		lineno:    ast.lineno,
 		cmdLineno: ast.cmdLineno,
 	}
-	ev.curRule.parse(line)
+	if err := ev.curRule.parse(line); err != "" {
+		Error(ast.filename, ast.lineno, err)
+	}
 	// It seems rules with no outputs are siliently ignored.
 	if len(ev.curRule.outputs) == 0 {
 		ev.curRule = nil