Prettyprint
From Wikipedia, the free encyclopedia
Prettyprint (or pretty-print) is the application of any of various stylistic formatting conventions to text, source code, markup, and other similar kinds of content. These formatting conventions usually consist of changes in positioning, spacing, color, contrast, size and similar modifications intended to make the content easier for people to view, read and understand. Prettyprinters for programming language source code are sometimes called code beautifiers or syntax highlighters.
Contents |
[edit] Pretty-printing mathematics
Pretty-printing usually refers to displaying mathematical expressions in a way that is similar to the way they are typeset professionally. For example, in computer algebra systems such as Maxima or Mathematica the system may write output like "x ^ 2 + 3 * x" as "x2 + 3x". Some graphing calculators can perform pretty-printing such as the HP-49 series and TI-89, or the TI-83 Plus/TI-84 Plus with the PrettyPt add-on.
Many text formatting programs can also typeset mathematics: TeX was developed specifically for high-quality mathematical typesetting.
[edit] Code formatting and beautification
Programmers often use tools to format their source code in a particular manner. Proper code formatting makes it easier to read and understand. Moreover, often different programmers have different preferred styles of formatting, such as the use of code indentation and whitespace or positioning of braces. A code formatter converts source code from one format style to another. This is relatively straightforward because of the unambiguous syntax of programming languages. Code beautification involves parsing the source code into component structures, such as assignment statements, if blocks, loops, etc. (see also control flow), and formatting them in a manner specified by the user in a configuration file.
There exist both standalone code beautifiers and built in ones in integrated development environments and text editors. For example, Emacs's various language modes can correctly indent blocks of code attractively.
An early example of pretty-printing was Bill Gosper's "GRIND" program, which used combinatorial search with pruning to format LISP programs. The term "grind" was used in some Lisp circles as a synonym for pretty-printing.[1]
[edit] Project style rules
Many open source projects have established rules for code layout. The most typical are the GNU style and the BSD style. The biggest difference between the two is the location of the braces: in the GNU style, opening and closing braces are on lines by themselves, with the same indent. BSD style places an opening brace at the end of the preceding line, and the closing braces can be followed by else. The size of indent and location of white space also differs.
[edit] Example of formatting and beautifying code
The following example shows some typical C structures and how various indentation style rules format them. Without any formatting at all, it looks like this:
int foo(int k) { if (k < 0 || k > 2) { printf("out of range\n"); printf("this function requires a value of 1 or 2\n"); } else { printf("Switching\n"); switch (k) { case 1: printf("1\n"); break; case 2: printf("2\n"); break; } } }
The GNU indent program produces the following output when asked to indent according to the GNU rules:
int foo (int k) { if (k < 0 || k > 2) { printf ("out of range\n"); printf ("this function requires a value of 1 or 2\n"); } else { printf ("Switching\n"); switch (k) { case 1: printf ("1\n"); break; case 2: printf ("2\n"); break; } } }
It produces this output when formatting according to BSD rules:
int foo(int k) { if (k < 0 || k > 2) { printf("out of range\n"); printf("this function requires a value of 1 or 2\n"); } else { printf("Switching\n"); switch (k) { case 1: printf("1\n"); break; case 2: printf("2\n"); break; } } }
[edit] Error formatting
Error messages from various software tools can be very lengthy and obscure.
Special tools and techniques are usually used to beautify the output, highlighting the cause of error and/or hiding less important information.
[edit] Text formatting
Text formatting can be considered a generalized form of pretty-printing.
[edit] Notes
- ^ Jargon File, s.v. grind
[edit] See also
- indent
- enscript, a general text printing tool with prettyprinting functions
- Elastic tabstop, an indentation technique that leads to automatic pretty-printing in advanced source code editors
- XML Pretty Printer
[edit] External links
[edit] Historical implementations
- Algorithm 268: ALGOL 60 reference language editor W. M. McKeeman: Commun. ACM 8(11): 667-668 (1965)
- NEATER2: a PL/I source statement reformatter Kenneth Conrow, Ronald G. Smith: Commun. ACM 13(11): 669-675 (1970)
- SOAP - A Program which Documents and Edits ALGOL 60 Programs. R. S. Scowen, D. Allin, A. L. Hillman, M. Shimell: Comput. J. 14(2): 133-135 (1971)
- PRETTYP.PAS Early pascal prettyprinter. Ledgard et al.: Pascal With Style (1979)
[edit] Code Beautifiers
Some Internet sites are providing online or instant free formatters or beautifiers. It means that you can paste your ugly source code (sometimes a single very long XML, SQL etc. line) into the provided text area of the site and get a beautified output which can be understood and modified.
But be careful that your code will be transferred via Internet and could be used by this Internet online parser (usually in order to improve the parser). You might prefer to get a desktop tool which would not transfer any of your private code. Some sites are providing Web browser applets that are downloaded on your desktop offering a quasi instant free formatter as secure as desktop installed tools.
- PHP Beautifier, Open source software, designed to reformat and beautify PHP source code files
- Online PHP Beautifier, Open source software, Online beautifier for php, source code is provided under GPL
- PHP mode for GNU Emacs, handles indentation
- Artistic Style, reformatter and reindenter of C++, C, C# and Java source code
- Polystyle, commercial reformatter for Microsoft Windows that handles many programming languages plus HTML and CSS
- PrettyPrinter, an Open Source beautifier for every programming language
- XML Pretty Printer Online, an online version of the XML Pretty Printer
- JS Beautifier, to beautify Javascript
- Perltidy, a reformatter and reindenter for Perl
- GNAT Pretty-Printer, a Free Software formatter for Ada
- Jedi Code Format an Open Source code formatter for Delphi (Object Pascal)
- JSON Formatter (& Validator!), an online JSON formatter
- prettyprinter.de, an online beautifier for PHP, Java, C++, C, Perl, JavaScript, CSS
- Uncrustify, a flexible code-reformatting and modification tool with examples for GNU-style, linux-kernel and D-style formatting
- UniversalIndentGUI, a graphical user interface for any pretty printer such as GNU Indent, AStyle or Uncrustify, with live preview for the formatting settings
- GNU indent program, indenter for C and similar languages
- VBScript Beautifier, VBScript beautifier beautifies VBScript files. You can use it for your ASP and clientside VBScript files
- Online SQL Beautifier, a free online utility that can reformat and colorize SQL code.
- Online T-SQL Beautifier, a free online utility that can validate, reformat and colorize Transact-SQL code.
[edit] Error Beautifiers
- STLFilt, Open source software, designed to reformat C++ STL error messages
- TextFilt, Open source software, designed to reformat C++ STL and template-related error messages
[edit] Coding style guides
- style(9) FreeBSD style guidelines
- Formatting your source code GNU style guidelines