summaryrefslogtreecommitdiff
path: root/ghc/compiler
diff options
context:
space:
mode:
authorsimonmar <unknown>2003-09-08 13:33:29 +0000
committersimonmar <unknown>2003-09-08 13:33:29 +0000
commit4fbd195423a6c8e8458bb2a3c4804275afe3c07a (patch)
tree236577a6d92aba7f7a1fe1cb2878c3e91c86a524 /ghc/compiler
parent5cbc33c27b1f762f79682117836350f6c2eae23f (diff)
downloadhaskell-4fbd195423a6c8e8458bb2a3c4804275afe3c07a.tar.gz
[project @ 2003-09-08 13:33:29 by simonmar]
Two more tokens that herald layout contexts: 'rec' and '[d|'.
Diffstat (limited to 'ghc/compiler')
-rw-r--r--ghc/compiler/parser/Lexer.x6
1 files changed, 4 insertions, 2 deletions
diff --git a/ghc/compiler/parser/Lexer.x b/ghc/compiler/parser/Lexer.x
index 0f2e23e42f..316cb10e33 100644
--- a/ghc/compiler/parser/Lexer.x
+++ b/ghc/compiler/parser/Lexer.x
@@ -198,7 +198,7 @@ $white_no_nl+ ;
"[|" { token ITopenExpQuote }
"[e|" { token ITopenExpQuote }
"[p|" { token ITopenPatQuote }
- "[d|" { token ITopenDecQuote }
+ "[d|" { layout_token ITopenDecQuote }
"[t|" { token ITopenTypQuote }
"|]" { token ITcloseQuote }
}
@@ -561,8 +561,9 @@ type Action = SrcLoc -> SrcLoc -> StringBuffer -> Int -> P Token
special :: Token__ -> Action
special tok loc end _buf len = return (T loc end tok)
-token :: Token__ -> Action
+token, layout_token :: Token__ -> Action
token t loc end buf len = return (T loc end t)
+layout_token t loc end buf len = pushLexState layout >> return (T loc end t)
idtoken :: (StringBuffer -> Int -> Token__) -> Action
idtoken f loc end buf len = return (T loc end $! (f buf len))
@@ -770,6 +771,7 @@ maybe_layout ITmdo = pushLexState layout_do
maybe_layout ITof = pushLexState layout
maybe_layout ITlet = pushLexState layout
maybe_layout ITwhere = pushLexState layout
+maybe_layout ITrec = pushLexState layout
maybe_layout _ = return ()
-- Pushing a new implicit layout context. If the indentation of the