summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPéter Diviánszky <divipp@gmail.com>2016-02-03 07:52:21 +0100
committerPéter Diviánszky <divipp@gmail.com>2016-02-03 07:52:21 +0100
commit4584f989c6a306a7b433a38406403d9af042ca11 (patch)
tree9e7f94f844efed0551e909fdf38474217da1fc44 /src
parent9aeb439117c9695c9dda9f475217f6b0a9033a5c (diff)
refactoring
Diffstat (limited to 'src')
-rw-r--r--src/LambdaCube/Compiler/Lexer.hs7
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
181tick :: Namespace -> SName -> SName
182tick = (\case TypeLevel -> switchTick; _ -> id) . fromMaybe ExpLevel . namespaceLevel 181tick = (\case TypeLevel -> switchTick; _ -> id) . fromMaybe ExpLevel . namespaceLevel
183 182
183tick' c = (`tick` c) <$> namespace
184
184switchTick ('\'': n) = n 185switchTick ('\'': n) = n
185switchTick n = '\'': n 186switchTick n = '\'': n
186 187
@@ -197,7 +198,7 @@ ifNoCNamespace p = namespace >>= \ns -> if constructorNamespace ns then mzero el
197 198
198lcIdentStart = satisfy $ \c -> isLower c || c == '_' 199lcIdentStart = satisfy $ \c -> isLower c || c == '_'
199identStart = satisfy $ \c -> isLetter c || c == '_' 200identStart = satisfy $ \c -> isLetter c || c == '_'
200identLetter = satisfy $ \c -> isAlphaNum c || c `elem` ("_'#" :: String) 201identLetter = satisfy $ \c -> isAlphaNum c || c == '_' || c == '\'' || c == '#'
201lowercaseOpLetter = oneOf "!#$%&*+./<=>?@\\^|-~" 202lowercaseOpLetter = oneOf "!#$%&*+./<=>?@\\^|-~"
202opLetter = oneOf ":!#$%&*+./<=>?@\\^|-~" 203opLetter = oneOf ":!#$%&*+./<=>?@\\^|-~"
203 204
@@ -208,7 +209,7 @@ upperLetter = satisfy isUpper <|> ifNoCNamespace identStart
208 209
209upperCase, lowerCase, symbols, colonSymbols, backquotedIdent :: P SName 210upperCase, lowerCase, symbols, colonSymbols, backquotedIdent :: P SName
210 211
211upperCase = identifier (tick <$> namespace <*> maybeStartWith (=='\'') ((:) <$> upperLetter <*> many identLetter)) <?> "uppercase ident" 212upperCase = identifier (tick' =<< maybeStartWith (=='\'') ((:) <$> upperLetter <*> many identLetter)) <?> "uppercase ident"
212lowerCase = identifier ((:) <$> lowerLetter <*> many identLetter) <?> "lowercase ident" 213lowerCase = identifier ((:) <$> lowerLetter <*> many identLetter) <?> "lowercase ident"
213backquotedIdent = identifier ((:) <$ char '`' <*> identStart <*> many identLetter <* char '`') <?> "backquoted ident" 214backquotedIdent = identifier ((:) <$ char '`' <*> identStart <*> many identLetter <* char '`') <?> "backquoted ident"
214symbols = operator (some opLetter) <?> "symbols" 215symbols = operator (some opLetter) <?> "symbols"