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