| Copyright | (c) 2009 Bernie Pope |
|---|---|
| License | BSD-style |
| Maintainer | bjpop@csse.unimelb.edu.au |
| Stability | experimental |
| Portability | ghc |
| Safe Haskell | Safe |
| Language | Haskell98 |
Language.Python.Common.ParserMonad
Description
Monad support for Python parser and lexer.
Documentation
type P a = StateT ParseState (Either ParseError) a #
execParser :: P a -> ParseState -> Either ParseError a #
execParserKeepComments :: P a -> ParseState -> Either ParseError (a, [Token]) #
runParser :: P a -> ParseState -> Either ParseError (a, ParseState) #
setLocation :: SrcLocation -> P () #
getLocation :: P SrcLocation #
getLastToken :: P Token #
setLastToken :: Token -> P () #
setLastEOL :: SrcSpan -> P () #
getLastEOL :: P SrcSpan #
data ParseError #
Constructors
| UnexpectedToken Token | An error from the parser. Token found where it should not be. Note: tokens contain their own source span. |
| UnexpectedChar Char SrcLocation | An error from the lexer. Character found where it should not be. |
| StrError String | A generic error containing a string message. No source location. |
Instances
data ParseState #
Constructors
| ParseState | |
Fields
| |
Instances
initialState :: SrcLocation -> String -> [Int] -> ParseState #
pushStartCode :: Int -> P () #
popStartCode :: P () #
getStartCode :: P Int #
pushIndent :: Int -> P () #
getIndentStackDepth :: P Int #
getParenStackDepth :: P Int #
addComment :: Token -> P () #
getComments :: P [Token] #