Three improvements to Template Haskell (fixes #3467)
[ghc-hetmet.git] / compiler / parser / Lexer.x
index 7f5c3a4..675b4d6 100644 (file)
@@ -46,6 +46,7 @@
 module Lexer (
    Token(..), lexer, pragState, mkPState, PState(..),
    P(..), ParseResult(..), getSrcLoc, 
+   getPState,
    failLocMsgP, failSpanMsgP, srcParseFail,
    getMessages,
    popContext, pushCurrentContext, setLastToken, setSrcLoc,
@@ -453,7 +454,6 @@ data Token
   | ITstdcallconv
   | ITccallconv
   | ITprimcallconv
-  | ITdotnet
   | ITmdo
   | ITfamily
   | ITgroup
@@ -530,8 +530,6 @@ data Token
 
   | ITdupipvarid   FastString  -- GHC extension: implicit param: ?x
 
-  | ITpragma StringBuffer
-
   | ITchar       Char
   | ITstring     FastString
   | ITinteger    Integer
@@ -544,7 +542,7 @@ data Token
   | ITprimfloat  Rational
   | ITprimdouble Rational
 
-  -- MetaHaskell extension tokens
+  -- Template Haskell extension tokens
   | ITopenExpQuote             --  [| or [e|
   | ITopenPatQuote             --  [p|
   | ITopenDecQuote             --  [d|
@@ -663,7 +661,6 @@ reservedWordsFM = listToUFM $
        ( "stdcall",    ITstdcallconv,   bit ffiBit),
        ( "ccall",      ITccallconv,     bit ffiBit),
        ( "prim",       ITprimcallconv,  bit ffiBit),
-       ( "dotnet",     ITdotnet,        bit ffiBit),
 
        ( "rec",        ITrec,           bit arrowsBit),
        ( "proc",       ITproc,          bit arrowsBit)
@@ -1515,6 +1512,9 @@ failLocMsgP loc1 loc2 str = P $ \_ -> PFailed (mkSrcSpan loc1 loc2) (text str)
 failSpanMsgP :: SrcSpan -> SDoc -> P a
 failSpanMsgP span msg = P $ \_ -> PFailed span msg
 
+getPState :: P PState
+getPState = P $ \s -> POk s s
+
 extension :: (Int -> Bool) -> P Bool
 extension p = P $ \s -> POk s (p $! extsBitmap s)