projects
/
ghc-hetmet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Implement -XKindSignatures
[ghc-hetmet.git]
/
compiler
/
parser
/
LexCore.hs
diff --git
a/compiler/parser/LexCore.hs
b/compiler/parser/LexCore.hs
index
936786d
..
f16575f
100644
(file)
--- a/
compiler/parser/LexCore.hs
+++ b/
compiler/parser/LexCore.hs
@@
-1,12
+1,11
@@
module LexCore where
import ParserCoreUtils
module LexCore where
import ParserCoreUtils
-import Ratio
import Char
import Numeric
isNameChar c = isAlpha c || isDigit c || (c == '_') || (c == '\'')
import Char
import Numeric
isNameChar c = isAlpha c || isDigit c || (c == '_') || (c == '\'')
- || (c == ':') || (c == '$')
+ || (c == '$') || (c == '-') || (c == '.')
isKeywordChar c = isAlpha c || (c == '_')
lexer :: (Token -> P a) -> P a
isKeywordChar c = isAlpha c || (c == '_')
lexer :: (Token -> P a) -> P a
@@
-29,6
+28,7
@@
lexer cont (')':cs) = cont TKcparen cs
lexer cont ('{':cs) = cont TKobrace cs
lexer cont ('}':cs) = cont TKcbrace cs
lexer cont ('=':cs) = cont TKeq cs
lexer cont ('{':cs) = cont TKobrace cs
lexer cont ('}':cs) = cont TKcbrace cs
lexer cont ('=':cs) = cont TKeq cs
+lexer cont (':':'=':':':cs) = cont TKcoloneqcolon cs
lexer cont (':':':':cs) = cont TKcoloncolon cs
lexer cont ('*':cs) = cont TKstar cs
lexer cont ('.':cs) = cont TKdot cs
lexer cont (':':':':cs) = cont TKcoloncolon cs
lexer cont ('*':cs) = cont TKstar cs
lexer cont ('.':cs) = cont TKdot cs
@@
-37,7
+37,9
@@
lexer cont ('@':cs) = cont TKat cs
lexer cont ('?':cs) = cont TKquestion cs
lexer cont (';':cs) = cont TKsemicolon cs
-- 20060420 GHC spits out constructors with colon in them nowadays. jds
lexer cont ('?':cs) = cont TKquestion cs
lexer cont (';':cs) = cont TKsemicolon cs
-- 20060420 GHC spits out constructors with colon in them nowadays. jds
-lexer cont (':':cs) = lexName cont TKcname (':':cs)
+-- 20061103 but it's easier to parse if we split on the colon, and treat them
+-- as several tokens
+lexer cont (':':cs) = cont TKcolon cs
-- 20060420 Likewise does it create identifiers starting with dollar. jds
lexer cont ('$':cs) = lexName cont TKname ('$':cs)
lexer cont (c:cs) = failP "invalid character" [c]
-- 20060420 Likewise does it create identifiers starting with dollar. jds
lexer cont ('$':cs) = lexName cont TKname ('$':cs)
lexer cont (c:cs) = failP "invalid character" [c]
@@
-94,6
+96,7
@@
lexKeyword cont cs =
("cast",rest) -> cont TKcast rest
("note",rest) -> cont TKnote rest
("external",rest) -> cont TKexternal rest
("cast",rest) -> cont TKcast rest
("note",rest) -> cont TKnote rest
("external",rest) -> cont TKexternal rest
+ ("local",rest) -> cont TKlocal rest
("_",rest) -> cont TKwild rest
_ -> failP "invalid keyword" ('%':cs)
("_",rest) -> cont TKwild rest
_ -> failP "invalid keyword" ('%':cs)