Don't hang when reading an invalid rvalue (#77)

Fixes #76
diff --git a/lexer.go b/lexer.go
index e7d5d24..3235753 100644
--- a/lexer.go
+++ b/lexer.go
@@ -234,6 +234,7 @@
 			return l.lexKey
 		}
 
+		return l.errorf("no value can start with %c", next)
 	}
 
 	l.emit(tokenEOF)
diff --git a/lexer_test.go b/lexer_test.go
index 382e05a..d6ddc07 100644
--- a/lexer_test.go
+++ b/lexer_test.go
@@ -692,3 +692,17 @@
 		token{Position{1, 7}, tokenEOF, ""},
 	})
 }
+
+func TestLexUnknownRvalue(t *testing.T) {
+	testFlow(t, `a = !b`, []token{
+		token{Position{1, 1}, tokenKey, "a"},
+		token{Position{1, 3}, tokenEqual, "="},
+		token{Position{1, 5}, tokenError, "no value can start with !"},
+	})
+
+	testFlow(t, `a = \b`, []token{
+		token{Position{1, 1}, tokenKey, "a"},
+		token{Position{1, 3}, tokenEqual, "="},
+		token{Position{1, 5}, tokenError, `no value can start with \`},
+	})
+}
diff --git a/parser_test.go b/parser_test.go
index 1ea5924..784cdb8 100644
--- a/parser_test.go
+++ b/parser_test.go
@@ -299,6 +299,18 @@
 	})
 }
 
+func TestParseUnknownRvalue(t *testing.T) {
+	_, err := Load("a = !bssss")
+	if err == nil {
+		t.Error("Expecting a parse error")
+	}
+
+	_, err = Load("a = /b")
+	if err == nil {
+		t.Error("Expecting a parse error")
+	}
+}
+
 func TestMissingValue(t *testing.T) {
 	_, err := Load("a = ")
 	if err.Error() != "(1, 5): expecting a value" {