Add RawExprAST
diff --git a/ast.go b/ast.go
index d30f4e7..137c29a 100644
--- a/ast.go
+++ b/ast.go
@@ -6,7 +6,8 @@
 }
 
 type ASTBase struct {
-	lineno int
+	filename string
+	lineno   int
 }
 
 const (
@@ -48,3 +49,16 @@
 		Log("\t%s", cmd)
 	}
 }
+
+type RawExprAST struct {
+	ASTBase
+	expr string
+}
+
+func (ast *RawExprAST) eval(ev *Evaluator) {
+	ev.evalRawExpr(ast)
+}
+
+func (ast *RawExprAST) show() {
+	Log("%s", ast.expr)
+}
diff --git a/eval.go b/eval.go
index 2d1de66..333e6be 100644
--- a/eval.go
+++ b/eval.go
@@ -154,6 +154,13 @@
 	ev.curRule = nil
 }
 
+func (ev *Evaluator) evalRawExpr(ast *RawExprAST) {
+	result := ev.evalExpr(ast.expr)
+	if result != "" {
+		fmt.Printf("%s:%d: *** missing separator.  Stop.\n", ast.filename, ast.lineno)
+	}
+}
+
 func (ev *Evaluator) eval(ast AST) {
 	ast.eval(ev)
 }
diff --git a/parser.go b/parser.go
index 43666f8..553a512 100644
--- a/parser.go
+++ b/parser.go
@@ -16,6 +16,7 @@
 type parser struct {
 	rd       *bufio.Reader
 	mk       Makefile
+	filename string
 	lineno   int
 	elineno  int // lineno == elineno unless there is trailing '\'.
 	unBuf    []byte
@@ -32,9 +33,10 @@
 	return true
 }
 
-func newParser(rd io.Reader) *parser {
+func newParser(rd io.Reader, filename string) *parser {
 	return &parser{
-		rd: bufio.NewReader(rd),
+		rd:       bufio.NewReader(rd),
+		filename: filename,
 	}
 }
 
@@ -47,6 +49,7 @@
 	p.lineno = p.elineno
 	line, err := p.rd.ReadBytes('\n')
 	p.lineno++
+	p.elineno = p.lineno
 	if err == io.EOF {
 		p.done = true
 	} else if err != nil {
@@ -90,6 +93,7 @@
 	lhs := string(bytes.TrimSpace(line[:sep]))
 	rhs := string(bytes.TrimLeft(line[esep:], " \t"))
 	ast := &AssignAST{lhs: lhs, rhs: rhs, assign_type: typ}
+	ast.filename = p.filename
 	ast.lineno = p.lineno
 	return ast
 }
@@ -101,6 +105,7 @@
 		lhs: lhs,
 		rhs: rhs,
 	}
+	ast.filename = p.filename
 	ast.lineno = p.lineno
 	for {
 		line := p.readLine()
@@ -144,6 +149,12 @@
 				break
 			}
 		}
+		if ast == nil && len(bytes.TrimSpace(line)) > 0 {
+			a := &RawExprAST{expr: string(line)}
+			a.filename = p.filename
+			a.lineno = p.lineno
+			p.mk.stmts = append(p.mk.stmts, a)
+		}
 	}
 	return p.mk, nil
 }
@@ -154,7 +165,7 @@
 		return Makefile{}, err
 	}
 	defer f.Close()
-	parser := newParser(f)
+	parser := newParser(f, filename)
 	return parser.parse()
 }
 
diff --git a/test/err_missing_sep.mk b/test/err_missing_sep.mk
new file mode 100644
index 0000000..257cc56
--- /dev/null
+++ b/test/err_missing_sep.mk
@@ -0,0 +1 @@
+foo