Move more logics for MaybeRule from eval.go to parser.go
diff --git a/parser.go b/parser.go
index 2090c0d..b16c7d5 100644
--- a/parser.go
+++ b/parser.go
@@ -186,6 +186,10 @@
 		return nil
 	}
 
+	expr := line
+	var term byte
+	var afterTerm []byte
+
 	// Either '=' or ';' is used.
 	if equalIndex >= 0 && semicolonIndex >= 0 {
 		if equalIndex < semicolonIndex {
@@ -194,11 +198,20 @@
 			equalIndex = -1
 		}
 	}
+	if semicolonIndex >= 0 {
+		afterTerm = expr[semicolonIndex:]
+		expr = expr[0:semicolonIndex]
+		term = ';'
+	} else if equalIndex >= 0 {
+		afterTerm = expr[equalIndex:]
+		expr = expr[0:equalIndex]
+		term = '='
+	}
 
 	ast := &MaybeRuleAST{
-		expr:           line,
-		equalIndex:     equalIndex,
-		semicolonIndex: semicolonIndex,
+		expr:      expr,
+		term:      term,
+		afterTerm: afterTerm,
 	}
 	ast.filename = p.mk.filename
 	ast.lineno = p.lineno