diff options
author | Péter Diviánszky <divipp@gmail.com> | 2016-02-03 07:52:21 +0100 |
---|---|---|
committer | Péter Diviánszky <divipp@gmail.com> | 2016-02-03 07:52:21 +0100 |
commit | 4584f989c6a306a7b433a38406403d9af042ca11 (patch) | |
tree | 9e7f94f844efed0551e909fdf38474217da1fc44 /src | |
parent | 9aeb439117c9695c9dda9f475217f6b0a9033a5c (diff) |
refactoring
Diffstat (limited to 'src')
-rw-r--r-- | src/LambdaCube/Compiler/Lexer.hs | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/LambdaCube/Compiler/Lexer.hs b/src/LambdaCube/Compiler/Lexer.hs index c1d1776c..576cba23 100644 --- a/src/LambdaCube/Compiler/Lexer.hs +++ b/src/LambdaCube/Compiler/Lexer.hs | |||
@@ -178,9 +178,10 @@ data Namespace = Namespace | |||
178 | } | 178 | } |
179 | deriving (Show) | 179 | deriving (Show) |
180 | 180 | ||
181 | tick :: Namespace -> SName -> SName | ||
182 | tick = (\case TypeLevel -> switchTick; _ -> id) . fromMaybe ExpLevel . namespaceLevel | 181 | tick = (\case TypeLevel -> switchTick; _ -> id) . fromMaybe ExpLevel . namespaceLevel |
183 | 182 | ||
183 | tick' c = (`tick` c) <$> namespace | ||
184 | |||
184 | switchTick ('\'': n) = n | 185 | switchTick ('\'': n) = n |
185 | switchTick n = '\'': n | 186 | switchTick n = '\'': n |
186 | 187 | ||
@@ -197,7 +198,7 @@ ifNoCNamespace p = namespace >>= \ns -> if constructorNamespace ns then mzero el | |||
197 | 198 | ||
198 | lcIdentStart = satisfy $ \c -> isLower c || c == '_' | 199 | lcIdentStart = satisfy $ \c -> isLower c || c == '_' |
199 | identStart = satisfy $ \c -> isLetter c || c == '_' | 200 | identStart = satisfy $ \c -> isLetter c || c == '_' |
200 | identLetter = satisfy $ \c -> isAlphaNum c || c `elem` ("_'#" :: String) | 201 | identLetter = satisfy $ \c -> isAlphaNum c || c == '_' || c == '\'' || c == '#' |
201 | lowercaseOpLetter = oneOf "!#$%&*+./<=>?@\\^|-~" | 202 | lowercaseOpLetter = oneOf "!#$%&*+./<=>?@\\^|-~" |
202 | opLetter = oneOf ":!#$%&*+./<=>?@\\^|-~" | 203 | opLetter = oneOf ":!#$%&*+./<=>?@\\^|-~" |
203 | 204 | ||
@@ -208,7 +209,7 @@ upperLetter = satisfy isUpper <|> ifNoCNamespace identStart | |||
208 | 209 | ||
209 | upperCase, lowerCase, symbols, colonSymbols, backquotedIdent :: P SName | 210 | upperCase, lowerCase, symbols, colonSymbols, backquotedIdent :: P SName |
210 | 211 | ||
211 | upperCase = identifier (tick <$> namespace <*> maybeStartWith (=='\'') ((:) <$> upperLetter <*> many identLetter)) <?> "uppercase ident" | 212 | upperCase = identifier (tick' =<< maybeStartWith (=='\'') ((:) <$> upperLetter <*> many identLetter)) <?> "uppercase ident" |
212 | lowerCase = identifier ((:) <$> lowerLetter <*> many identLetter) <?> "lowercase ident" | 213 | lowerCase = identifier ((:) <$> lowerLetter <*> many identLetter) <?> "lowercase ident" |
213 | backquotedIdent = identifier ((:) <$ char '`' <*> identStart <*> many identLetter <* char '`') <?> "backquoted ident" | 214 | backquotedIdent = identifier ((:) <$ char '`' <*> identStart <*> many identLetter <* char '`') <?> "backquoted ident" |
214 | symbols = operator (some opLetter) <?> "symbols" | 215 | symbols = operator (some opLetter) <?> "symbols" |