BNFC-2.9.1: A compiler front-end generator.
Safe HaskellSafe-Inferred
LanguageHaskell2010

BNFC.PrettyPrint

Description

Extends 'PrettyPrint'.

Synopsis

Documentation

parensIf :: Bool -> Doc -> Doc Source #

Put parens around document if given condition is true.

>>> parensIf True "foo"
(foo)
>>> parensIf False "bar"
bar

($++$) :: Doc -> Doc -> Doc Source #

Separate vertically by a blank line.

>>> "foo" $++$ "bar"
foo

bar
>>> "foo" $++$ empty
foo

vsep :: [Doc] -> Doc Source #

List version of $++$.

>>> vsep [ "foo", nest 4 "bar" ]
foo

    bar
>>> vsep []

vcat' :: [Doc] -> Doc Source #

List version of $+$.

>>> vcat' [text "abc", nest 4 (text "def")]
abc
    def

(<=>) :: Doc -> Doc -> Doc Source #

Pretty print separator with = (for assignments...).

>>> "a" <=> "123"
a = 123

prettyList Source #

Arguments

:: Int

Indentation.

-> Doc

Preamble.

-> Doc

Left parenthesis.

-> Doc

Right parenthesis.

-> Doc

Separator (usually not including spaces).

-> [Doc]

List item.

-> Doc 

Print a list of 0-1 elements on the same line as some preamble and from 2 elements on the following lines, indented.

>>> prettyList 2 ("foo" <+> equals) lbrack rbrack comma []
foo = []
>>> prettyList 2 ("foo" <+> equals) lbrack rbrack comma [ "a" ]
foo = [a]
>>> prettyList 2 ("foo" <+> equals) lbrack rbrack comma [ "a", "b" ]
foo =
  [ a
  , b
  ]

Used in the Agda backend.

codeblock :: Int -> [Doc] -> Doc Source #

Code block. A block of C/Java code, surrounded by {} and indented.

>>> codeblock 4 ["abc", "def"]
{
    abc
    def
}

Used in the C backend.