@@ -79,9 +79,11 @@ innerVarChar :: IParser Char
7979innerVarChar = alphaNum <|> char '_' <|> char '\'' <?> ""
8080
8181makeVar :: IParser Char -> IParser String
82−makeVar p = do v <- (:) <$> p <*> many innerVarChar
83− guard (v `notElem` reserveds)
84− return v
82+makeVar p = do
83+ v <- (:) <$> p <*> many innerVarChar
84+ if v `elem` reserveds
85+ then fail $ "unexpected keyword '" ++ v ++ "', variables cannot be keywords"
86+ else return v
8587
8688reserved :: String -> IParser String
8789reserved word =