summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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"