content: {-# OPTIONS  #-}
  -----------------------------------------------------------------------------
  -- |
  -- Module      : Language.JavaScript.ParserMonad
  -- Copyright   : (c) 2012 Alan Zimmerman
  -- License     : BSD-style
  -- Stability   : experimental
  -- Portability : ghc
  --
  -- Monad support for JavaScript parser and lexer.
  -----------------------------------------------------------------------------
  
  module Language.JavaScript.Parser.ParserMonad
      ( AlexUserState(..)
      , alexInitUserState
      ) where
  
  import Language.JavaScript.Parser.Token
  import Language.JavaScript.Parser.SrcLocation
  
  data AlexUserState = AlexUserState
      { previousToken :: !Token   -- ^the previous token
      , comment :: [Token]        -- ^the previous comment, if any
      , inTemplate :: Bool        -- ^whether the parser is expecting template characters
      }
  
  alexInitUserState :: AlexUserState
  alexInitUserState = AlexUserState
      { previousToken = initToken
      , comment = []
      , inTemplate = False
      }
  
  initToken :: Token
  initToken = CommentToken tokenPosnEmpty "" []
  