@string{ spe = "Software --- Practice {\it\&} Experience" }
@string{ spln = "ACM SIGPLAN Notices" }
@string{ CACM = "Communications of the ACM" }


@article{Arab92,
 author = {Arab, M.} ,
 title = {Enhancing program comprehension: formatting and documenting},
 journal = spln,
 volume = 27,
 number = 2,
 month = feb,
 year = 1992,
 pages = {37--46},
 note = {},
 library = {},
 annote = {
    The authors compare Peterson77 scheme of Pascal formatting with
    Crider78 and Leinbaught80. Then the authors develop their own
    scheme. They present a documentation scheme and briefly present
    two tools that do `interactive' prettyprinting and documenting.
    They don`t talk about details and methods used.

    lang = PASCAL
    cont = system, formatting rules
 }
}

@article{Bailes84,
 author = {Bailes, P. A. and Salvadori, A.},
 title = {A semantically-based formatting discipline for {Pascal}},
 journal = spe,
 volume = 14,
 number = 3,
 month = mar,
 year = 1984,
 pages = {235--251},
 note = {},
 library = {},
 annote = {
    The authors give a new set of formatting rules for Pascal
    that are based on the semantics and stress vertical
    separation.  They claim that they are
    strict and consistent. They stress the distinction between
    formatting policy (set of guidelines) and the formatting
    algorithm that implements the policy. Finally, they also
    give a chronological overview over published rules for
    Pascal.

    lang = PASCAL
    cont = formatting rules
 }
}

@article{Baldwin86,
 author = {Baldwin, R. R.},
 title = {Systematic indentation in PL/I: minimizing the reduction in
		horizontal space},

 journal = spln,
 volume = 21,
 number = 9,
 month = sep,
 year = 1986,
 pages = {22--26},
 note = {},
 library = {},
 annote = {
    The author gives some traditional hints on how to minimize the
    reduction of horizontal space in PL/I programs.

    lang = PL/I
    cont = formatting rules
 }
}


@article{Bates81,
 author = {Bates, R. M.},
 title = {A {Pascal} Prettyprinter With a Different Purpose},

 journal = spln,
 volume = 16,
 number = 3,
 month = mar,
 year = 1981,
 pages = {10--17},
 note = {},
 library = {},
 annote = {
    I've never seen so many typos in the biblioghaphy. A slow paper!

    lang = PASCAL
    cont = system, formatting rules
 }
}

@article{Blaschek89,
 author = {Blaschek, G. and Sametinger, J.},
 title = {User-adaptable prettyprinting},

 journal = spe,
 volume = 19,
 number = 7,
 month = jul,
 year = 1989,
 pages = {687--702},
 note = {},
 library = {},
 annote = {
    Uses attribute grammar. Language dependent front end, independent
    back end. Uses (modified) folding algorithm from Oppen80.

    kopiert
 }
}


@article{Bond79,
 author = {Bond, R.},
 title = {Another note on {Pascal} indentation},

 journal = spln,
 volume = 14,
 number = 12,
 month = dec,
 year = 1979,
 pages = {47--49},
 note = {},
 library = {},
 annote = {
    The quality of a formatting method should be measured in its simplicity.
    The author presents a very simple algorithm that implements a simple
    formatting method.

    lang = independent
    cont = algorithm, rules
 }
}


@article{ Clifton78,
 author = {Clifton, H. M.},
 title = {A technique for making structured programs more readable},

 journal = spln,
 volume = 13,
 number = 4,
 month = apr,
 year = 1978,
 pages = {58--63},
 note = {},
 library = {},
 annote = {
    The author introduces connector lines as an additional way of
    visualizing nested structures.

    lang = PL/I
    cont = ?
 }
}

@article{ Conrow70,
 author = {Conrow, K. and Smith, R. G.},
 title = {{NEATER2}: A {PL/I} source program reformatter},

 journal = CACM,
 volume = 13,
 number = 11,
 month = nov,
 year = 1970,
 pages = {669--675},
 note = {},
 library = {},
 annote = {
    The authors give no indication of the underlying algorithm. Input
    needs to be syntactically correct. Prettyprinter runs on keywords.

    lang = PL/I
    cont = system
 }
}

@article{Cooper85,
 author = {Cooper, B., Gallagher, B. and Sekercan, G.},
 title = {Feedbacks to `A {Pascal} indentation philisophy'},

 journal = "Computer Language",
 volume = 7,
 number = 12,
 month = dec,
 year = 1985,
 pages = {},
 note = {},
 library = {not available},
 annote = {
    crossref to Heckert85,
 }
}


@article{Crider78,
 author = {Crider, J.},
 title = {Structured formatting of {Pascal} programs},

 journal = spln,
 volume = 13,
 number = 11,
 month = nov,
 year = 1978,
 pages = {15--22},
 note = {},
 library = {},
 annote = {
    lang = PASCAL
    cont = formatting rules
 }
}


@techreport{Fritzson83,
 author = {Fritzson, P.},
 title = {Adaptive prettyprinting of abstract syntax applied to {Ada} and
		{Pascal}},
 month = {},
 year = 1983,
 institution = {University of Link\"oping, Sweden},
 address = {},
 type = {Research Report},
 number = {},
 note = {},
 library = {not available},
 annote = {
 }
}

@article{Guillemette90,
 author = {Guillemette, R. A.},
 title = {What readers mean by `good documentation'},

 journal = "Information and Management",
 volume = 18,
 number = 2,
 month = feb,
 year = 1990,
 pages = {69--77},
 note = {},
 library = {not available},
 annote = {
 }
}


@techreport{ Goldstein73,
 author = {Goldstein, I.},
 title = {Prettyprinting, converting list to linear structure},
 month = {},
 year = 1973,
 institution = {M.I.T. Artificial Intelligence Laboratory, Cambridge, Mass.},
 address = {},
 type = {},
 number = 279,
 note = {},
 library = {not available},
 annote = {
 }
}


@mastersthesis{Gordon,
 author = {Gordon, H.},
 type = {M.Sc.~Thesis},
 title = {Paragraphing computer programs},
 month = {},
 year = 1975,
 school = {University of Toronto, Toronto, Ontario, Canada},
 address = {},
 note = {},
 library = {not available},
 annote = {
 }
}


@article{Grogono79,
 author = {Grogono, P.},
 title = {On Layout, Identifiers and Semicolons in {Pascal} Programs},

 journal = spln,
 volume = 14,
 number = 4,
 month = apr,
 year = 1979,
 pages = {35--40},
 note = {},
 library = {},
 annote = {
    mentions ecological aspect of prettyprinting: waste of paper when
    few characters are on one line.

    lang = PASCAL
    cont = formatting rules
 }
}


@article{Grogono89,
 author = {Grogono, P.},
 title = {Comments, Assertions, and Pragmas},

 journal = spln,
 volume = 24,
 number = 3,
 month = mar,
 year = 1989,
 pages = {79--84},
 note = {},
 library = {},
 annote = {
    ``comments are second class citizens'' (p.80)

    argues that comments, assertions and pragmas should be treated as
    part of the language grammar. Proposes different views of canonical
    (full) sourcetext representation.
 }
}


@article{Gustafson79,
 author = {Gustafson, G. G.},
 title = {Some practical experiences formatting {PASCAL} programs},

 journal = spln,
 volume = 14,
 number = 9,
 month = sep,
 year = 1979,
 pages = {42--49},
 note = {},
 library = {},
 annote = {
    syntesis of Peterson77 and Crider78

    lang = PASCAL
    cont = formatting rules
 }
}

@article{ Hearn79,
 author = {Hearn, A. C. and Norman, A. C.},
 title = {A one-pass prettyprinter},

 journal = spln,
 volume = 14,
 number = 12,
 month = dec,
 year = 1979,
 pages = {50--58},
 note = {},
 library = {},
 annote = {
    Idea of coroutines: printing and formatting. Printing selects
    possible break spaces and controls indentation, formatting
    decides when to break.

    lang = independent
    cont = formatting rules, system
 }
}


@article{Heckert85,
 author = {Heckert, R.},
 title = {A {Pascal} indentation philosophy},

 journal = "Computer Language",
 volume = {},
 number = {},
 month = sep,
 year = 1985,
 pages = {37--39},
 note = {},
 library = {not available},
 annote = {
 }
}


@article{Horowitz86,
 author = {Horowitz, E. and Williamson, R. C.},
 title = {SODOS: A Software Documentation Support Environment -- Its
		Definition},

 journal = {IEEE Transactions on Software Engineering},
 volume = "SE-12",
 number = 8,
 month = aug,
 year = 1986,
 pages = {849--859},
 note = {},
 library = {},
 annote = {
 }
}

@article{ Hueras77,
 author = {Hueras, Jon and Ledgard, Henry},
 title = {An Automatic Formatting Program for {PASCAL}},

 journal = spln,
 volume = 12,
 number = 7,
 month = jul,
 year = 1977,
 pages = {82--84},
 note = {},
 library = {},
 annote = {
    runs on keywords

    kopiert
 }
}


@article{Jackel80,
 author = {Jackel, M.},
 title = {A formatting parser for {Pascal} programs},

 journal = spln,
 volume = 15,
 number = "7--8",
 month = "July--August",
 year = 1980,
 pages = {58--63},
 note = {},
 library = {},
 annote = {
    The author presents a parser for Pascal. The design concept
    is that a parser breaks up the text into tokens and editing
    (formatting) instructions and a final editor (formatter)
    puts the output into printable form.
    The actual implementation mixes both up again in that the
    line breaking is done by the (recursive descent) parser
    routines.
    The problems of formatting comments is noted and no bibliography
    is given!

    lang = PASCAL
    cont = system
 }
}

@article{Jokinen89,
 author = {Jokinen, M. O.},
 title = {A language-independent pretty printer},

 journal = spe,
 volume = 19,
 number = 9,
 month = sep,
 year = 1989,
 pages = {839--856},
 note = {},
 library = {},
 annote = {
    kopiert
 }
}


@article{Kaelbling88,
 author = {Kaelbling, M. J.},
 title = {Programming Languages Should {NOT} Have Comment Statements},

 journal = spln,
 volume = 23,
 number = 10,
 month = oct,
 year = 1988,
 pages = {59--60},
 note = {},
 library = {},
 annote = {
    comments should have a scope to show to which part of the program
    they belong. This makes them more readable. Scoped comments could be
    included into the language grammar.
 }
}

@article{Knuth-Plass81,
 author = {Knuth, D. E. and Plass, M. F.},
 title = {Breaking Paragraphs into Lines},

 journal = spe,
 volume = 11,
 number = {},
 month = {},
 year = 1981,
 pages = {1119--1184},
 note = {},
 library = {},
 annote = {
    The authors present an algorithm that takes the global
    appearance of the paragraph into account when breaking
    lines.

    algorithm is also suitable for prettyprinting
 }
}


@article{Leavens84,
 author = {Leavens, G. T.},
 title = {Prettyprinting styles for various languages},

 journal = spln,
 volume = 19,
 number = 2,
 month = feb,
 year = 1984,
 pages = {75--79},
 note = {},
 library = {},
 annote = {
    The author sees three different prettyprinting styles and
    presents a hypothesis for which type of language uses which
    type of style:
    1. Languages with uniform small closing delimiters use the
       LISP style.

          ( key
             body )

    2. Languages with uniform but larger closing delimiters use
       PL/I style:

          keyw
             body
             end

    3. Languages with several distinct closing keywords use
       Ada style:

          keyw
             body
          end keyw

    A special exception is C!
 }
}


@book{ Ledgard75,
 author = {Ledgard, Henry F.},
 title = {Programming Proverbs},
 edition = {},
 series = {},
 volume = {},
 number = {},
 publisher = {Hayden, Rochelle Park, New Jersey},
 address = {},
 year = 1975,
 isbn = {},
 note = {},
 library = {not available},
 annote = {
 }
}



@article{ Ledgard77,
 author = {Ledgard, H. and Singer, A. and Hueras, J.},
 title = {A Basis for Executing {PASCAL} Programmers},

 journal = spln,
 volume = 12,
 number = 7,
 month = jul,
 year = 1977,
 pages = {101--105},
 note = {},
 library = {},
 annote = {
    kopiert
 }
}


@article{Leinbaught80,
 author = {Leinbaught, D. W.},
 title = {Indenting for the Compiler},

 journal = spln,
 volume = 15,
 number = 5,
 month = may,
 year = 1980,
 pages = {41--48},
 note = {},
 library = {},
 annote = {
    Formatting alone is a sufficient specification of a program's block
    structure. This is proved with PASCAL as an example. Compilers should
    also be able to ``see'' indentation so compound statements don't
    have to be bracketed anymore with begin/end.
 }
}


@article{Marca81,
 author = {Marca, D.},
 title = {Some {Pascal} Style Guidelines},

 journal = spln,
 volume = 16,
 number = 4,
 month = apr,
 year = 1981,
 pages = {70--80},
 note = {},
 library = {},
 annote = {
    discussion of the term ``style''. proposal of a PASCAL style

    lang = PASCAL
    cont = rules
 }
}


@article{Mateti83a,
 author = {Mateti, P.},
 title = {A specification scheme for indenting programs},

 journal = spe,
 volume = 13,
 number = {},
 month = {},
 year = 1983,
 pages = {163--179},
 note = {},
 library = {},
 annote = {
    crossref  to Mateti83b

    lang = PASCAL
    cont = algorithm
 }
}


@article{Mateti83b,
 author = {Mateti, P. and Jaffar, J.},
 title = {A correctness proof of an indenting program},

 journal = spe,
 volume = 13,
 number = {},
 month = {},
 year = 1983,
 pages = {199--226},
 note = {},
 library = {},
 annote = {
 }
}

@article{ McKeeman65,
 author = {McKeeman, William M.},
 title = {Algorithm 268},

 journal = CACM,
 volume = 8,
 number = {},
 month = {},
 year = 1965,
 pages = {667--668},
 note = {},
 library = {},
 annote = {
    lang = ALGOL
    cont = algorithm
 }
}


@article{Miara83,
 author = {Miara, R. J. et al.},
 title = {Program indentation and comprehensibility},

 journal = CACM,
 volume = 26,
 number = 11,
 month = nov,
 year = 1983,
 pages = {861--867},
 note = {},
 library = {},
 annote = {
    Gruendliche Untersuchung ueber den Wert unterschiedlicher
    Einrueckungstiefen.
 }
}


@article{Mohilner78,
 author = {Mohilner, Patricia R},
 title = {Prettyprinting {PASCAL} Programs},

 journal = spln,
 volume = 13,
 number = 7,
 month = jul,
 year = 1978,
 pages = {34--40},
 note = {},
 library = {},
 annote = {
    kopiert
 }
}


@article{Morcos86,
 author = {Morcos-Chounet, E. and Conchon, A.},
 title = {PPML: a general formalism to specify prettyprinting},

 journal = "Information Processing",
 volume = 86,
 number = {},
 month = {},
 year = 1986,
 pages = {583--590},
 note = {},
 library = {not available},
 annote = {
 }
}


@article{ALGOL-Report,
 author = {Naur, Peter and others},
 title = {Report on the algorithmic language {Algol}~60},

 journal = CACM,
 volume = 3,
 number = 5,
 month = may,
 year = 1960,
 pages = {299--314},
 note = {},
 library = {},
 annote = {
    formatting standards are part of language description
 }
}


@article{Norris84,
 author = {Norris, D.},
 title = {An {Ada} prettyprinter},

 journal = "Journal of Pascal and Ada",
 volume = 3,
 number = 4,
 month = apr,
 year = 1984,
 pages = {29--48},
 note = {},
 library = {not available},
 annote = {
 }
}

@article{OmanXX,
 author = {Oman, P., and Cook, C. R.},
 title = {Typographic style is more than Cosmetic},

 journal = {},
 volume = {},
 number = {},
 month = {},
 year = {},
 pages = {},
 note = {},
 library = {},
 annote = {
 }
}


@article{ Oppen80,
 author = {Oppen, Derek C.},
 title = {Prettyprinting},

 journal = "ACM Transactions on Programming Languages and System",
 volume = 2,
 number = 4,
 month = oct,
 year = 1980,
 pages = {465--483},
 note = {},
 library = {},
 annote = {
    kopiert
 }
}

@article{ Peterson77,
 author = {Peterson, James L.},
 title = {On the Formatting of {Pascal} Programs},

 journal = spln,
 volume = 12,
 number = 12,
 month = dec,
 year = 1977,
 pages = {83--86},
 note = {},
 library = {},
 annote = {
    kopiert
 }
}


@article{ Ramsdell79,
 author = {Ramsdell, J.},
 title = {Prettyprinting structured programs with connector lines},

 journal = spln,
 volume = 14,
 number = 9,
 month = sep,
 year = 1979,
 pages = {74--75},
 note = {},
 library = {},
 annote = {
    uses semicolons as connector lines in the source code
    crossref to Clifton78
 }
}


@article{ Richard77,
 author = {Richard, Frederic and Ledgard, Henry F.},
 title = {A Reminder for Language Designers},

 journal = spln,
 volume = 12,
 number = 12,
 month = dec,
 year = 1977,
 pages = {73--83},
 note = {},
 library = {},
 annote = {
    - readability more important than writability
    - classification of comment types (p. 81)
    - no language to date has desired documentation features
 }
}

@article{Rorbillard89,
 author = {Rorbillard, P. N.},
 title = {Automating Comments},

 journal = spln,
 volume = 24,
 number = 5,
 month = apr,
 year = 1989,
 pages = {66--70},
 note = {},
 library = {},
 annote = {
    distinguishes between narrative comments (what) and operational
    comments (how). Operational comments can hide statements and act
    as refinements.

    lang = ?
    cont = system
 }
}


@article{Rose81,
 author = {Rose, G. A. and Welsh, J},
 title = {Formatted Programming Languages},

 journal = spe,
 volume = 11,
 number = {},
 month = {},
 year = 1981,
 pages = {651--669},
 note = {},
 library = {},
 annote = {
    kopiert
 }
}

@article{Rubin83,
 author = {Rubin, Lisa F.},
 title = {Syntax-Directed Pretty Printing --- A First Step Towards a
		Syntax-Directed Editor},

 journal = "IEEE Transactions on Software Engineering",
 volume = "SE-9",
 number = 2,
 month = mar,
 year = 1983,
 pages = {119--127},
 note = {},
 library = {},
 annote = {
    kopiert
 }
}

@article{ Sale78,
 author = {Sale, A. H. J.},
 title = {Stylistics in languages with compound statements},

 journal = "Australian Computer Journal",
 volume = 10,
 number = 2,
 month = may,
 year = 1978,
 pages = {58--59},
 note = {},
 library = {},
 annote = {
    kopiert
 }
}



@article{ Sankar89,
 author = {Sankar, S.},
 title = {APE --- a set of \TeX{} macros to format Ada programs},

 journal = "Ada Letters",
 volume = 9,
 number = 7,
 month = "November/December",
 year = 1989,
 pages = {114--128},
 note = {},
 library = {not available},
 annote = {
 }
}

@article{Scowen71,
 author = {Scowen, R. and Allin, D. and Hillman, A. L. and Shimell, M.},
 title = {{SOAP} -- {A} program which documents and edits {Algol}60 programs},

 journal = "The Computer Journal",
 volume = 14,
 number = 2,
 month = {},
 year = 1971,
 pages = {133--135},
 note = {},
 library = {},
 annote = {
 }
}


@article{ Stylebibliography,
 author = {Thomas, E. J. and Oman, P. W.},
 title = {A Bibliography of Programming Style},

 journal = spln,
 volume = 25,
 number = 2,
 month = feb,
 year = 1990,
 pages = {7--16},
 note = {},
 library = {},
 annote = {
    kopiert
 }
}

@article{ Waters83,
 author = {Waters, R.},
 title = {User Format Control in a {LISP} Prettyprinter},

 journal = "ACM Transactions on Programming Languages and Systems",
 volume = 5,
 number = 4,
 month = oct,
 year = 1983,
 pages = {513--531},
 note = {},
 library = {},
 annote = {
    Gives a detailed description of a prettyprinting algorithm that
    may be applied to other languages too. Refers to Hearn79 and
    Oppen80.

    lang = LISP/independent
    cont = algorithm
 }
}


@article{Waters92,
 author = {Waters, R.C.},
 title = {Using the new common {LISP} pretty printer},

 journal = "Lisp and Symbolic Computation",
 volume = "V",
 number = 2,
 month = "April--June",
 year = 1992,
 pages = {27--34},
 note = {},
 library = {not available},
 annote = {
 }
}

@article{Winter89,
 author = {Winter, K. and Cook, C.},
 title = {A prototype intelligent prettyprinter for {Pascal}},

 journal = spln,
 volume = 24,
 number = 9,
 month = sep,
 year = 1989,
 pages = {116--125},
 note = {},
 library = {},
 annote = {
    The authors describe a prettyprinter that learns the formatting
    style from a sample piece of code. The prettyprinter analyses
    the sample code and captures the way whitespace is used after
    keywords. Such whitespace tokens have two associated values:
    (1) the number of newlines to be inserted and (2) an integer
    value that specifies the change of indentation. Problems:
    absolute alignment (of comments for example).

    lang = PASCAL
    cont = algorithm
 }
}

@article{ Woodman86,
 author = {Woodman, M.},
 title = {Formatted Syntaxes and {Modula-2}},

 journal = spe,
 volume = 16,
 number = 7,
 month = jul,
 year = 1986,
 pages = {605--626},
 note = {},
 library = {},
 annote = {
    kopiert
    crossref to Rose81
 }
}

@article{Yehudai80,
 author = {Yehudai, A.},
 title = {Automatic indentation versus program formatting},

 journal = spln,
 volume = 15,
 number = 10,
 month = {},
 year = 1980,
 pages = {85--87},
 note = {},
 library = {},
 annote = {
    prettyprinters should allow fine tuning the output with format
    commands inserted into the code (as comments) by the user.
 }
}


