diff --git a/Language/Haskell/Exts.hs b/Language/Haskell/Exts.hs
--- a/Language/Haskell/Exts.hs
+++ b/Language/Haskell/Exts.hs
@@ -20,6 +20,7 @@
 parseFileContents = parseFileContentsWithMode defaultParseMode
 
 parseFileContentsWithMode :: ParseMode -> String -> ParseResult HsModule
-parseFileContentsWithMode p rawStr =
-	let cleanStr = unlines [ s | s@(c:_) <- lines rawStr, c /= '#' ]
-	 in parseModuleWithMode p cleanStr
+parseFileContentsWithMode p rawStr = parseModuleWithMode p (unlines $ map f $ lines rawStr)
+    where
+        f ('#':_) = ""
+        f x = x
diff --git a/Language/Haskell/Exts/Lexer.hs b/Language/Haskell/Exts/Lexer.hs
--- a/Language/Haskell/Exts/Lexer.hs
+++ b/Language/Haskell/Exts/Lexer.hs
@@ -236,7 +236,7 @@
 isIdent   c = isAlpha c || isDigit c || c == '\'' || c == '_'
 
 --isHSymbol c = elem c ":!#$%&*+./<=>?@\\^|-~"
-isHSymbol c = c `elem` ":!#%&*./?@\\-" || (isSymbol c && not (c `elem` "(),;[]`{}_\"'"))
+isHSymbol c = c `elem` ":!#%&*./?@\\-" || ((isSymbol c || isPunctuation c) && not (c `elem` "(),;[]`{}_\"'"))
 
 matchChar :: Char -> String -> Lex a ()
 matchChar c msg = do
@@ -482,6 +482,7 @@
 --                        return RPSeqOpen
 --        '/':')':_ -> do discard 2
 --                        return RPSeqClose
+        '(':'|':c:_  | isHSymbol c -> discard 1 >> return LeftParen
         '(':'|':_ -> do discard 2
                         return RPGuardOpen
         '|':')':_ -> do discard 2
diff --git a/Language/Haskell/Exts/Syntax.hs b/Language/Haskell/Exts/Syntax.hs
--- a/Language/Haskell/Exts/Syntax.hs
+++ b/Language/Haskell/Exts/Syntax.hs
@@ -98,8 +98,12 @@
 
 
 #ifdef __GLASGOW_HASKELL__
+#if __GLASGOW_HASKELL__ >= 610
+import Data.Data
+#else
 import Data.Generics.Basics
 import Data.Generics.Instances
+#endif
 #endif
 
 -- | A position in the source.
diff --git a/Setup.hs b/Setup.hs
--- a/Setup.hs
+++ b/Setup.hs
@@ -1,2 +1,2 @@
 import Distribution.Simple
-main = defaultMainWithHooks defaultUserHooks
+main = defaultMain
diff --git a/haskell-src-exts.cabal b/haskell-src-exts.cabal
--- a/haskell-src-exts.cabal
+++ b/haskell-src-exts.cabal
@@ -1,5 +1,5 @@
 Name:                   haskell-src-exts
-Version:                0.3.7
+Version:                0.3.9
 License:                BSD3
 License-File:           LICENSE
 Author:                 Niklas Broberg
