Accept and warn about capitalization in keywords.

This commit is contained in:
Vidar Holen 2014-03-15 16:08:33 -07:00
parent b68de7f42b
commit 67f4a0d6eb
1 changed files with 11 additions and 3 deletions

View File

@ -1811,16 +1811,24 @@ redirToken c t = try $ do
notFollowedBy2 $ char '(' notFollowedBy2 $ char '('
return $ t id return $ t id
tryWordToken s t = tryParseWordToken (string s) t `thenSkip` spacing tryWordToken s t = tryParseWordToken s t `thenSkip` spacing
tryParseWordToken parser t = try $ do tryParseWordToken keyword t = try $ do
id <- getNextId id <- getNextId
parser str <- anycaseString keyword
optional (do optional (do
try . lookAhead $ char '[' try . lookAhead $ char '['
parseProblem ErrorC 1069 "You need a space before the [.") parseProblem ErrorC 1069 "You need a space before the [.")
try $ lookAhead (keywordSeparator) try $ lookAhead (keywordSeparator)
when (str /= keyword) $
parseProblem ErrorC 1081 $
"Scripts are case sensitive. Use '" ++ keyword ++ "', not '" ++ str ++ "'."
return $ t id return $ t id
anycaseString str =
mapM anycaseChar str
where
anycaseChar c = char (toLower c) <|> char (toUpper c)
g_AND_IF = tryToken "&&" T_AND_IF g_AND_IF = tryToken "&&" T_AND_IF
g_OR_IF = tryToken "||" T_OR_IF g_OR_IF = tryToken "||" T_OR_IF
g_DSEMI = tryToken ";;" T_DSEMI g_DSEMI = tryToken ";;" T_DSEMI