language-fortran-0.5.1: Fortran lexer and parser, language support, and extensions.

Safe HaskellNone
LanguageHaskell98

Language.Fortran.Pretty

Contents

Synopsis

Documentation

pprint :: PrettyPrintable t => t -> String #

Core pretty-printing primitive

data DefaultPP #

Define default pretty-print version constructor

Constructors

DefaultPP 

Instances

class PPVersion a #

The set of all types which can be used to switch between pretty printer versions

Instances

class PrintMaster t v where #

Master print behaviour

Minimal complete definition

printMaster

Methods

printMaster :: (?variant :: v) => t -> String #

Instances

PPVersion v => PrintMaster String v #

Definition of the master pretty printer which, notably, is defined for all versions v.

Methods

printMaster :: String -> String #

(PPVersion v, PrintSlave (ProgUnit p) v) => PrintMaster [ProgUnit p] v # 

Methods

printMaster :: [ProgUnit p] -> String #

(PrintSlave (Expr p) v, PPVersion v) => PrintMaster (Spec p) v # 

Methods

printMaster :: Spec p -> String #

PPVersion v => PrintMaster (UnaryOp p) v # 

Methods

printMaster :: UnaryOp p -> String #

PPVersion v => PrintMaster (BinOp p) v # 

Methods

printMaster :: BinOp p -> String #

(PrintSlave (ArgList p) v, PrintSlave (BinOp p) v, PrintSlave (Expr p) v, PrintSlave (UnaryOp p) v, PrintSlave (VarName p) v, PPVersion v) => PrintMaster (Expr p) v # 

Methods

printMaster :: Expr p -> String #

(PrintIndMaster (Fortran p) v, PPVersion v) => PrintMaster (Fortran p) v # 

Methods

printMaster :: Fortran p -> String #

PrintSlave (Expr p) v => PrintMaster (DataForm p) v # 

Methods

printMaster :: DataForm p -> String #

(PrintSlave (Arg p) v, PrintSlave (Decl p) v, PrintSlave (Implicit p) v, PrintSlave (SubName p) v, PPVersion v) => PrintMaster (InterfaceSpec p) v # 
(PrintSlave (Arg p) v, PrintSlave (BinOp p) v, PrintSlave (Expr p) v, PPVersion v) => PrintMaster (GSpec p) v # 

Methods

printMaster :: GSpec p -> String #

PPVersion v => PrintMaster (Fraction p) v # 

Methods

printMaster :: Fraction p -> String #

PPVersion v => PrintMaster (MeasureUnitSpec p) v # 
(PrintSlave (ArgList p) v, PrintSlave (BinOp p) v, PrintSlave (Expr p) v, PrintSlave (UnaryOp p) v, PrintSlave (VarName p) v, PrintSlave (MeasureUnitSpec p) v, PPVersion v) => PrintMaster (Attr p) v # 

Methods

printMaster :: Attr p -> String #

(PrintSlave (SubName p) v, PPVersion v) => PrintMaster (BaseType p) v # 

Methods

printMaster :: BaseType p -> String #

(PrintSlave (ArgList p) v, PrintSlave (BinOp p) v, PrintSlave (UnaryOp p) v, PrintSlave (BaseType p) v, PrintSlave (Expr p) v, PrintSlave (MeasureUnitSpec p) v, PrintSlave (VarName p) v, PPVersion v) => PrintMaster (Type p) v # 

Methods

printMaster :: Type p -> String #

(Indentor (Decl p), PrintSlave (Arg p) v, PrintSlave (ArgList p) v, PrintSlave (Attr p) v, PrintSlave (BinOp p) v, PrintSlave (Decl p) v, PrintSlave (DataForm p) v, PrintSlave (Expr p) v, PrintSlave (GSpec p) v, PrintSlave (Implicit p) v, PrintSlave (InterfaceSpec p) v, PrintSlave (MeasureUnitSpec p) v, PrintSlave (SubName p) v, PrintSlave (UnaryOp p) v, PrintSlave (VarName p) v, PrintSlave (Type p) v, PPVersion v) => PrintMaster (Decl p) v # 

Methods

printMaster :: Decl p -> String #

(PrintSlave (Fortran p) v, PrintSlave (Decl p) v, PrintSlave (Implicit p) v, PPVersion v) => PrintMaster (Block p) v # 

Methods

printMaster :: Block p -> String #

PPVersion v => PrintMaster (Uses p) v # 

Methods

printMaster :: Uses p -> String #

(PPVersion v, PrintMaster (Uses p) v) => PrintMaster (UseBlock p) v # 

Methods

printMaster :: UseBlock p -> String #

PPVersion v => PrintMaster (Implicit p) v # 

Methods

printMaster :: Implicit p -> String #

(PrintSlave (Arg p) v, PrintSlave (BaseType p) v, PrintSlave (Block p) v, PrintSlave (Decl p) v, PrintSlave (Fortran p) v, PrintSlave (Implicit p) v, PrintSlave (SubName p) v, PrintSlave (VarName p) v, PrintSlave (ProgUnit p) v, PPVersion v) => PrintMaster (ProgUnit p) v # 

Methods

printMaster :: ProgUnit p -> String #

(PrintSlave (Expr p) v, PPVersion v) => PrintMaster (ArgList p) v # 

Methods

printMaster :: ArgList p -> String #

(PrintSlave (ArgName p) v, PPVersion v) => PrintMaster (Arg p) v # 

Methods

printMaster :: Arg p -> String #

(PrintSlave (VarName p) v, PrintSlave (ArgName p) v, PPVersion v) => PrintMaster (ArgName p) v # 

Methods

printMaster :: ArgName p -> String #

PPVersion v => PrintMaster (VarName p) v # 

Methods

printMaster :: VarName p -> String #

PPVersion v => PrintMaster (SubName p) v # 

Methods

printMaster :: SubName p -> String #

class PrintSlave t v where #

Slave print behaviour

Minimal complete definition

printSlave

Methods

printSlave :: (?variant :: v) => t -> String #

Instances

PrintMaster t DefaultPP => PrintSlave t DefaultPP #

Default slave behaviour

Methods

printSlave :: t -> String #

PPVersion v => PrintSlave String v #

Behaviours that all slaves must have, i.e., for all versions v

Methods

printSlave :: String -> String #

class PrintIndSlave t v where #

Slave print-indenting behaviour

Minimal complete definition

printIndSlave

Methods

printIndSlave :: (?variant :: v) => Int -> t -> String #

class PrintIndMaster t v where #

Master print-indenting behaviour

Minimal complete definition

printIndMaster

Methods

printIndMaster :: (?variant :: v) => Int -> t -> String #

printMasterInterfaceSpecs :: (?variant :: v, PrintMaster t v) => [t] -> [Char] #

show_namelist :: (PrintSlave t1 v, PrintSlave t v, ?variant :: v) => [(t1, [t])] -> [Char] #

show_data :: (PrintSlave t1 v, PrintSlave t v, ?variant :: v) => (t1, t) -> [Char] #

showDV :: (PrintMaster t1 v, Show a, PrintSlave (ArgList t) v, PrintSlave (BinOp t) v, PrintSlave (Expr t) v, PrintSlave (UnaryOp t) v, PrintSlave (VarName t) v, PPVersion v, ?variant :: v) => (t1, Expr t, Maybe a) -> [Char] #

showDU :: (PrintMaster t1 v, PrintMaster t v, ?variant :: v) => (t1, t) -> [Char] #

showElseIf :: (PrintSlave t1 v, PrintSlave t v, ?variant :: v) => Int -> (t1, t) -> [Char] #

showForall :: (PrintSlave (Expr t) v, PrintSlave t2 v, PrintSlave t1 v, ?variant :: v) => [([Char], t2, t1, Expr t)] -> [Char] #

checkPrec :: BinOp p -> BinOp p -> (a -> a) -> a -> a #

opPrec :: BinOp p -> Int #

class Indentor t where #

Minimal complete definition

indR

Methods

indR :: t -> Int -> String #

Instances

Indentor (p ()) # 

Methods

indR :: p () -> Int -> String #

showNQ :: Show a => a -> String #

ind :: Int -> [Char] #

indent :: Int -> Int -> [Char] #

printList :: [[a1]] -> (a -> [a1]) -> [a] -> [a1] #

asTuple :: (a -> [Char]) -> [a] -> [Char] #

asSeq :: (a -> [Char]) -> [a] -> [Char] #

asList :: (a -> [Char]) -> [a] -> [Char] #

asSet :: (a -> [Char]) -> [a] -> [Char] #

asLisp :: (a -> [Char]) -> [a] -> [Char] #

asPlain :: (a -> [Char]) -> [a] -> [Char] #

asPlain' :: (a -> [Char]) -> [a] -> [Char] #

asCases :: Int -> (a -> [Char]) -> [a] -> [Char] #

asDefs :: [Char] -> (a -> [Char]) -> [a] -> [Char] #

asParagraphs :: (a -> [Char]) -> [a] -> [Char] #

optTuple :: (?variant :: v, PPVersion v, PrintSlave (UnaryOp p) v, PrintMaster (Expr p) v) => [Expr p] -> String #

optTuple xs = ""

showUnits :: (PPVersion v, ?variant :: v, PrintMaster (Fraction p) v) => [(MeasureUnit, Fraction p)] -> String #

printMasterList :: (PPVersion v, ?variant :: v, PrintMaster a v) => [a] -> String #

showBounds :: (PPVersion v, ?variant :: v, PrintMaster (Expr p) v) => (Expr p, Expr p) -> String #

showRanges :: (PPVersion v, ?variant :: v, PrintMaster (Expr p) v) => [(Expr p, Expr p)] -> String #

showPartRefList :: (PPVersion v, ?variant :: v, PrintSlave (VarName p) v, PrintSlave (UnaryOp p) v, PrintMaster (Expr p) v) => [(VarName p, [Expr p])] -> String #