Language.Haskell.Exts.Parser

haskell-src-exts-1.14.0.1: Manipulating Haskell source: abstract syntax, lexer, parser, and pretty-printer

Copyright | (c) The GHC Team, 1997-2000 (c) Niklas Broberg, 2004-2012
License | BSD-style (see the file LICENSE.txt)
Maintainer | Niklas Broberg, niklas.broberg@chalmers.se
Stability | stable
Portability | portable
Safe Haskell | None
Language | Haskell98

Language.Haskell.Exts.Parser

Contents

- General parsing
- Parsing of specific AST elements
  - Modules
  - Expressions
  - Statements
  - Patterns
  - Declarations
  - Types
  - Option pragmas

Description

Parser for Haskell with extensions.

Synopsis

- class Parseable ast where
  - parse :: String -> ParseResult ast
  - parseWithMode :: ParseMode -> String -> ParseResult ast
  - parseWithComments :: ParseMode -> String -> ParseResult (ast, [Comment])
- data ParseMode = ParseMode {
  - parseFilename :: String
  - baseLanguage :: Language
  - extensions :: [Extension]
  - ignoreLanguagePragmas :: Bool
  - ignoreLinePragmas :: Bool
  - fixities :: Maybe [Fixity]
  }
- defaultParseMode :: ParseMode
- data ParseResult a
  - = ParseOk a
  - | ParseFailed SrcLoc String
- fromParseResult :: ParseResult a -> a
- parseModule :: String -> ParseResult Module
- parseModuleWithMode :: ParseMode -> String -> ParseResult Module
- parseModuleWithComments :: ParseMode -> String -> ParseResult (Module, [Comment])
- parseExp :: String -> ParseResult Exp
- parseExpWithMode :: ParseMode -> String -> ParseResult Exp
- parseExpWithComments :: ParseMode -> String -> ParseResult (Exp, [Comment])
- parseStmt :: String -> ParseResult Stmt
- parseStmtWithMode :: ParseMode -> String -> ParseResult Stmt
- parseStmtWithComments :: ParseMode -> String -> ParseResult (Stmt, [Comment])
- parsePat :: String -> ParseResult Pat
- parsePatWithMode :: ParseMode -> String -> ParseResult Pat
- parsePatWithComments :: ParseMode -> String -> ParseResult (Pat, [Comment])
- parseDecl :: String -> ParseResult Decl
- parseDeclWithMode :: ParseMode -> String -> ParseResult Decl
- parseDeclWithComments :: ParseMode -> String -> ParseResult (Decl, [Comment])
- parseType :: String -> ParseResult Type
- parseTypeWithMode :: ParseMode -> String -> ParseResult Type
- parseTypeWithComments :: ParseMode -> String -> ParseResult (Type, [Comment])
- getTopPragmas :: String -> ParseResult [ModulePragma]

# General parsing

class Parseable ast where

Class to reuse the parse function at many different types.

Methods

parse :: String -> ParseResult ast

Parse a string with default mode.

parseWithMode :: ParseMode -> String -> ParseResult ast

Parse a string with an explicit mode.

parseWithComments :: ParseMode -> String -> ParseResult (ast, [Comment])

Parse a string with an explicit mode, returning all comments along the AST

Instances

Parseable Pat |
Parseable Exp |
Parseable Type |
Parseable Decl |
Parseable Module |
SrcInfo loc => Parseable (Stmt loc) |
SrcInfo loc => Parseable (Pat loc) |
SrcInfo loc => Parseable (Exp loc) |
SrcInfo loc => Parseable (Type loc) |
SrcInfo loc => Parseable (Decl loc) |
SrcInfo loc => Parseable (Module loc) |

data ParseMode

Static parameters governing a parse. Note that the various parse functions in Language.Haskell.Exts.Parser never look at LANGUAGE pragmas, regardless of what the `ignoreLanguagePragmas` flag is set to. Only the various `parseFile` functions in Language.Haskell.Exts will act on it, when set to `False`.

Constructors

ParseMode |
Fields parseFilename :: String original name of the file being parsed baseLanguage :: Language base language (e.g. Haskell98, Haskell2010) extensions :: [Extension] list of extensions enabled for parsing ignoreLanguagePragmas :: Bool if `True`, the parser won't care about further extensions in LANGUAGE pragmas in source files ignoreLinePragmas :: Bool if `True`, the parser won't read line position information from LINE pragmas in source files fixities :: Maybe [Fixity] list of fixities to be aware of

defaultParseMode :: ParseMode

Default parameters for a parse. The default is an unknown filename, no extensions (i.e. Haskell 98), don't ignore LANGUAGE pragmas, do ignore LINE pragmas, and be aware of fixities from the `Prelude`.

data ParseResult a

The result of a parse.

Constructors

ParseOk a | The parse succeeded, yielding a value.
ParseFailed SrcLoc String | The parse failed at the specified source location, with an error message.

Instances

Monad ParseResult |
Functor ParseResult |
Applicative ParseResult |
Show a => Show (ParseResult a) |
Monoid m => Monoid (ParseResult m) |

fromParseResult :: ParseResult a -> a

Retrieve the result of a successful parse, throwing an error if the parse is actually not successful.

# Parsing of specific AST elements

## Modules

parseModule :: String -> ParseResult Module

Parse of a string, which should contain a complete Haskell module.

parseModuleWithMode :: ParseMode -> String -> ParseResult Module

Parse of a string containing a complete Haskell module, using an explicit mode.

parseModuleWithComments :: ParseMode -> String -> ParseResult (Module, [Comment])

Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments.

## Expressions

parseExp :: String -> ParseResult Exp

Parse of a string containing a Haskell expression.

parseExpWithMode :: ParseMode -> String -> ParseResult Exp

Parse of a string containing a Haskell expression, using an explicit mode.

parseExpWithComments :: ParseMode -> String -> ParseResult (Exp, [Comment])

Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments.

## Statements

parseStmt :: String -> ParseResult Stmt

Parse of a string containing a Haskell type.

parseStmtWithMode :: ParseMode -> String -> ParseResult Stmt

Parse of a string containing a Haskell type, using an explicit mode.

parseStmtWithComments :: ParseMode -> String -> ParseResult (Stmt, [Comment])

Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments.

## Patterns

parsePat :: String -> ParseResult Pat

Parse of a string containing a Haskell pattern.

parsePatWithMode :: ParseMode -> String -> ParseResult Pat

Parse of a string containing a Haskell pattern, using an explicit mode.

parsePatWithComments :: ParseMode -> String -> ParseResult (Pat, [Comment])

Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments.

## Declarations

parseDecl :: String -> ParseResult Decl

Parse of a string containing a Haskell top-level declaration.

parseDeclWithMode :: ParseMode -> String -> ParseResult Decl

Parse of a string containing a Haskell top-level declaration, using an explicit mode.

parseDeclWithComments :: ParseMode -> String -> ParseResult (Decl, [Comment])

Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments.

## Types

parseType :: String -> ParseResult Type

Parse of a string containing a Haskell type.

parseTypeWithMode :: ParseMode -> String -> ParseResult Type

Parse of a string containing a Haskell type, using an explicit mode.

parseTypeWithComments :: ParseMode -> String -> ParseResult (Type, [Comment])

Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments.

## Option pragmas

getTopPragmas :: String -> ParseResult [ModulePragma]