-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Manipulating Core Erlang source code -- -- Facilities for manipulating Core Erlang source code: an abstract -- syntax, parser and pretty-printer. @package CoreErlang @version 0.0.4 -- | A suite of datatypes describing the abstract syntax of CoreErlang -- 1.0.3. http://www.it.uu.se/research/group/hipe/cerl/ module Language.CoreErlang.Syntax -- | A CoreErlang source module. data Module Module :: Atom -> [Function] -> [(Atom, Const)] -> [FunDef] -> Module -- | This type is used to represent lambdas data FunDef FunDef :: (Ann Function) -> (Ann Exp) -> FunDef -- | CoreErlang expression. data Exp -- | variable Var :: Var -> Exp -- | literal constant Lit :: Literal -> Exp -- | function name Fun :: Function -> Exp -- | application App :: Exps -> [Exps] -> Exp -- | module call ModCall :: (Exps, Exps) -> [Exps] -> Exp -- | lambda expression Lambda :: [Var] -> Exps -> Exp -- | sequencing Seq :: Exps -> Exps -> Exp -- | local declaration Let :: ([Var], Exps) -> Exps -> Exp -- | letrec expression LetRec :: [FunDef] -> Exps -> Exp -- | case exp of alts end Case :: Exps -> [Ann Alt] -> Exp -- | tuple expression Tuple :: [Exps] -> Exp -- | list expression List :: (List Exps) -> Exp -- | binary expression Binary :: [BitString Exps] -> Exp -- | operator application Op :: Atom -> [Exps] -> Exp -- | try expression Try :: Exps -> ([Var], Exps) -> ([Var], Exps) -> Exp -- | receive expression Rec :: [Ann Alt] -> TimeOut -> Exp -- | catch expression Catch :: Exps -> Exp -- | CoreErlang expressions. data Exps -- | single expression Exp :: (Ann Exp) -> Exps -- | list of expressions Exps :: (Ann [Ann Exp]) -> Exps -- | An alt in a case expression data Alt Alt :: Pats -> Guard -> Exps -> Alt -- | A guarded alternative when exp -> -- exp. The first expression will be Boolean-valued. data Guard Guard :: Exps -> Guard -- | A list of expressions data List a L :: [a] -> List a LL :: [a] -> a -> List a -- | The timeout of a receive expression data TimeOut TimeOut :: Exps -> Exps -> TimeOut -- | A bitstring. data BitString a BitString :: a -> [Exps] -> BitString a -- | This type is used to represent function names data Function Function :: (Atom, Integer) -> Function data Pats -- | single pattern Pat :: Pat -> Pats -- | list of patterns Pats :: [Pat] -> Pats -- | A pattern, to be matched against a value. data Pat -- | variable PVar :: Var -> Pat -- | literal constant PLit :: Literal -> Pat -- | tuple pattern PTuple :: [Pat] -> Pat -- | list pattern PList :: (List Pat) -> Pat -- | list of bitstring patterns PBinary :: [BitString Pat] -> Pat -- | alias pattern PAlias :: Alias -> Pat -- | An alias, used in patterns data Alias Alias :: Var -> Pat -> Alias -- | literal. Values of this type hold the abstract value of the -- literal, not the precise string representation used. For example, -- 10, 0o12 and 0xa have the same -- representation. data Literal -- | character literal LChar :: Char -> Literal -- | string literal LString :: String -> Literal -- | integer literal LInt :: Integer -> Literal -- | floating point literal LFloat :: Double -> Literal -- | atom literal LAtom :: Atom -> Literal -- | empty list LNil :: Literal -- | This type is used to represent constants data Const CLit :: Literal -> Const CTuple :: [Const] -> Const CList :: (List Const) -> Const -- | This type is used to represent atoms data Atom Atom :: String -> Atom -- | This type is used to represent variables type Var = String -- | An annotation for modules, variables, ... data Ann a -- | core erlang construct Constr :: a -> Ann a -- | core erlang annotated construct Ann :: a -> [Const] -> Ann a instance Data.Data.Data Language.CoreErlang.Syntax.Module instance GHC.Show.Show Language.CoreErlang.Syntax.Module instance GHC.Classes.Ord Language.CoreErlang.Syntax.Module instance GHC.Classes.Eq Language.CoreErlang.Syntax.Module instance Data.Data.Data a => Data.Data.Data (Language.CoreErlang.Syntax.BitString a) instance GHC.Show.Show a => GHC.Show.Show (Language.CoreErlang.Syntax.BitString a) instance GHC.Classes.Ord a => GHC.Classes.Ord (Language.CoreErlang.Syntax.BitString a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.CoreErlang.Syntax.BitString a) instance Data.Data.Data Language.CoreErlang.Syntax.Alias instance GHC.Show.Show Language.CoreErlang.Syntax.Alias instance GHC.Classes.Ord Language.CoreErlang.Syntax.Alias instance GHC.Classes.Eq Language.CoreErlang.Syntax.Alias instance Data.Data.Data Language.CoreErlang.Syntax.Pat instance GHC.Show.Show Language.CoreErlang.Syntax.Pat instance GHC.Classes.Ord Language.CoreErlang.Syntax.Pat instance GHC.Classes.Eq Language.CoreErlang.Syntax.Pat instance Data.Data.Data Language.CoreErlang.Syntax.Pats instance GHC.Show.Show Language.CoreErlang.Syntax.Pats instance GHC.Classes.Ord Language.CoreErlang.Syntax.Pats instance GHC.Classes.Eq Language.CoreErlang.Syntax.Pats instance Data.Data.Data Language.CoreErlang.Syntax.Guard instance GHC.Show.Show Language.CoreErlang.Syntax.Guard instance GHC.Classes.Ord Language.CoreErlang.Syntax.Guard instance GHC.Classes.Eq Language.CoreErlang.Syntax.Guard instance Data.Data.Data Language.CoreErlang.Syntax.Alt instance GHC.Show.Show Language.CoreErlang.Syntax.Alt instance GHC.Classes.Ord Language.CoreErlang.Syntax.Alt instance GHC.Classes.Eq Language.CoreErlang.Syntax.Alt instance Data.Data.Data Language.CoreErlang.Syntax.Exps instance GHC.Show.Show Language.CoreErlang.Syntax.Exps instance GHC.Classes.Ord Language.CoreErlang.Syntax.Exps instance GHC.Classes.Eq Language.CoreErlang.Syntax.Exps instance Data.Data.Data Language.CoreErlang.Syntax.TimeOut instance GHC.Show.Show Language.CoreErlang.Syntax.TimeOut instance GHC.Classes.Ord Language.CoreErlang.Syntax.TimeOut instance GHC.Classes.Eq Language.CoreErlang.Syntax.TimeOut instance Data.Data.Data Language.CoreErlang.Syntax.Exp instance GHC.Show.Show Language.CoreErlang.Syntax.Exp instance GHC.Classes.Ord Language.CoreErlang.Syntax.Exp instance GHC.Classes.Eq Language.CoreErlang.Syntax.Exp instance Data.Data.Data Language.CoreErlang.Syntax.FunDef instance GHC.Show.Show Language.CoreErlang.Syntax.FunDef instance GHC.Classes.Ord Language.CoreErlang.Syntax.FunDef instance GHC.Classes.Eq Language.CoreErlang.Syntax.FunDef instance Data.Data.Data a => Data.Data.Data (Language.CoreErlang.Syntax.Ann a) instance GHC.Show.Show a => GHC.Show.Show (Language.CoreErlang.Syntax.Ann a) instance GHC.Classes.Ord a => GHC.Classes.Ord (Language.CoreErlang.Syntax.Ann a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.CoreErlang.Syntax.Ann a) instance Data.Data.Data Language.CoreErlang.Syntax.Const instance GHC.Show.Show Language.CoreErlang.Syntax.Const instance GHC.Classes.Ord Language.CoreErlang.Syntax.Const instance GHC.Classes.Eq Language.CoreErlang.Syntax.Const instance Data.Data.Data a => Data.Data.Data (Language.CoreErlang.Syntax.List a) instance GHC.Show.Show a => GHC.Show.Show (Language.CoreErlang.Syntax.List a) instance GHC.Classes.Ord a => GHC.Classes.Ord (Language.CoreErlang.Syntax.List a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.CoreErlang.Syntax.List a) instance Data.Data.Data Language.CoreErlang.Syntax.Literal instance GHC.Show.Show Language.CoreErlang.Syntax.Literal instance GHC.Classes.Ord Language.CoreErlang.Syntax.Literal instance GHC.Classes.Eq Language.CoreErlang.Syntax.Literal instance Data.Data.Data Language.CoreErlang.Syntax.Function instance GHC.Show.Show Language.CoreErlang.Syntax.Function instance GHC.Classes.Ord Language.CoreErlang.Syntax.Function instance GHC.Classes.Eq Language.CoreErlang.Syntax.Function instance Data.Data.Data Language.CoreErlang.Syntax.Atom instance GHC.Show.Show Language.CoreErlang.Syntax.Atom instance GHC.Classes.Ord Language.CoreErlang.Syntax.Atom instance GHC.Classes.Eq Language.CoreErlang.Syntax.Atom -- | Pretty printer for CoreErlang. module Language.CoreErlang.Pretty -- | Things that can be pretty-printed, including all the syntactic objects -- in Language.CoreErlang.Syntax. class Pretty a -- | pretty-print with a given style and mode. prettyPrintStyleMode :: Pretty a => Style -> PPMode -> a -> String -- | pretty-print with the default style and a given mode. prettyPrintWithMode :: Pretty a => PPMode -> a -> String -- | pretty-print with the default style and defaultMode. prettyPrint :: Pretty a => a -> String -- | A rendering style. Allows us to specify constraints to choose among -- the many different rendering options. data Style :: * Style :: Mode -> Int -> Float -> Style -- | The rendering mode. [mode] :: Style -> Mode -- | Maximum length of a line, in characters. [lineLength] :: Style -> Int -- | Ratio of line length to ribbon length. A ribbon refers to the -- characters on a line excluding indentation. So a -- lineLength of 100, with a ribbonsPerLine of 2.0 -- would only allow up to 50 characters of ribbon to be displayed on a -- line, while allowing it to be indented up to 50 characters. [ribbonsPerLine] :: Style -> Float -- | The default style (mode=PageMode, lineLength=100, -- ribbonsPerLine=1.5). style :: Style -- | Rendering mode. data Mode :: * -- | Normal rendering (lineLength and ribbonsPerLine -- respected'). PageMode :: Mode -- | With zig-zag cuts. ZigZagMode :: Mode -- | No indentation, infinitely long lines (lineLength ignored), but -- explicit new lines, i.e., text "one" $$ text "two", are -- respected. LeftMode :: Mode -- | All on one line, lineLength ignored and explicit new lines -- ($$) are turned into spaces. OneLineMode :: Mode -- | Pretty-printing parameters. data PPMode PPMode :: Indent -> Indent -> Indent -> Indent -> Indent -> Indent -> Indent -> PPLayout -> PPMode -- | indentation of the alternatives in a case expression [altIndent] :: PPMode -> Indent -- | indentation of the declarations in a case expression [caseIndent] :: PPMode -> Indent -- | indentation of the declarations in a function definition [fundefIndent] :: PPMode -> Indent -- | indentation of the declarations in a lambda expression [lambdaIndent] :: PPMode -> Indent -- | indentation of the declarations in a let expression [letIndent] :: PPMode -> Indent -- | indentation of the declarations in a letrec expression [letrecIndent] :: PPMode -> Indent -- | indentation added for continuation lines that would otherwise be -- offside [onsideIndent] :: PPMode -> Indent -- | Pretty-printing style to use [layout] :: PPMode -> PPLayout type Indent = Int -- | Varieties of layout we can use. data PPLayout -- | classical layout PPDefault :: PPLayout -- | everything on a single line PPNoLayout :: PPLayout -- | The default mode: pretty-print using sensible defaults. defaultMode :: PPMode instance GHC.Classes.Eq Language.CoreErlang.Pretty.PPLayout instance Language.CoreErlang.Pretty.Pretty Language.CoreErlang.Syntax.Module instance Language.CoreErlang.Pretty.Pretty Language.CoreErlang.Syntax.Function instance Language.CoreErlang.Pretty.Pretty Language.CoreErlang.Syntax.Const instance Language.CoreErlang.Pretty.Pretty Language.CoreErlang.Syntax.FunDef instance Language.CoreErlang.Pretty.Pretty Language.CoreErlang.Syntax.Literal instance Language.CoreErlang.Pretty.Pretty Language.CoreErlang.Syntax.Atom instance Language.CoreErlang.Pretty.Pretty Language.CoreErlang.Syntax.Exps instance Language.CoreErlang.Pretty.Pretty Language.CoreErlang.Syntax.Exp instance Language.CoreErlang.Pretty.Pretty a => Language.CoreErlang.Pretty.Pretty (Language.CoreErlang.Syntax.List a) instance Language.CoreErlang.Pretty.Pretty Language.CoreErlang.Syntax.Alt instance Language.CoreErlang.Pretty.Pretty Language.CoreErlang.Syntax.Pats instance Language.CoreErlang.Pretty.Pretty Language.CoreErlang.Syntax.Pat instance Language.CoreErlang.Pretty.Pretty Language.CoreErlang.Syntax.Alias instance Language.CoreErlang.Pretty.Pretty Language.CoreErlang.Syntax.Guard instance Language.CoreErlang.Pretty.Pretty Language.CoreErlang.Syntax.TimeOut instance Language.CoreErlang.Pretty.Pretty a => Language.CoreErlang.Pretty.Pretty (Language.CoreErlang.Syntax.BitString a) instance Language.CoreErlang.Pretty.Pretty a => Language.CoreErlang.Pretty.Pretty (Language.CoreErlang.Syntax.Ann a) instance GHC.Base.Functor (Language.CoreErlang.Pretty.DocM s) instance GHC.Base.Applicative (Language.CoreErlang.Pretty.DocM s) instance GHC.Base.Monad (Language.CoreErlang.Pretty.DocM s) -- | CoreErlang parser. -- http://www.it.uu.se/research/group/hipe/cerl/ module Language.CoreErlang.Parser -- | Parse of a string, which should contain a complete CoreErlang module parseModule :: String -> Either ParseError (Ann Module) -- | The abstract data type ParseError represents parse errors. It -- provides the source position (SourcePos) of the error and a -- list of error messages (Message). A ParseError can be -- returned by the function parse. ParseError is an -- instance of the Show and Eq classes. data ParseError :: *