Communications of the ACM
NEATER2: a PL/I source statement reformatter
Communications of the ACM
Algorithm 268: ALGOL 60 reference language editor [R2]
Communications of the ACM
The Cornell Program Synthesizer: A Microcomputer Implementation of PL/CS
The Cornell Program Synthesizer: A Microcomputer Implementation of PL/CS
Prettyprinting PASCAL programs
ACM SIGPLAN Notices
On the formatting of Pascal programs
ACM SIGPLAN Notices
An automatic formatting program for PASCAL
ACM SIGPLAN Notices
Design principles for the enhanced presentation of computer program source text
CHI '86 Proceedings of the SIGCHI Conference on Human Factors in Computing Systems
Enhancing program readability and comprehensibility with tools for program visualization
ICSE '88 Proceedings of the 10th international conference on Software engineering
The impact of computer-aided software engineering on student performance
SIGCSE '91 Proceedings of the twenty-second SIGCSE technical symposium on Computer science education
The Proteus presentation system
SDE 5 Proceedings of the fifth ACM SIGSOFT symposium on Software development environments
Generation of formatters for context-free languages
ACM Transactions on Software Engineering and Methodology (TOSEM)
Communications of the ACM - Special issue: multiprocessing
Moses: a graphics oriented software development environment
CSC '87 Proceedings of the 15th annual conference on Computer Science
User Format Control in a LISP Prettyprinter
ACM Transactions on Programming Languages and Systems (TOPLAS)
Grammar-Based Definition of Metaprogramming Systems
ACM Transactions on Programming Languages and Systems (TOPLAS)
IEEE Software
Infinite pretty-printing in eXene
Trends in functional programming
Pragmatic Aspects of Reusable Program Generators
SAIG '00 Proceedings of the International Workshop on Semantics, Applications, and Implementation of Program Generation
On enhancing the interface to the source code of computer programs
CHI '83 Proceedings of the SIGCHI Conference on Human Factors in Computing Systems
Preliminary experience from the dice system a distributed incremantal compiling environment
SDE 1 Proceedings of the first ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments
Pragmatic aspects of reusable program generators
Journal of Functional Programming
A case for contemporary literate programming
SAICSIT '04 Proceedings of the 2004 annual research conference of the South African institute of computer scientists and information technologists on IT research in developing countries
Pretty printing with lazy dequeues
ACM Transactions on Programming Languages and Systems (TOPLAS)
The Zephyr abstract syntax description language
DSL'97 Proceedings of the Conference on Domain-Specific Languages on Conference on Domain-Specific Languages (DSL), 1997
KHEPERA: a system for rapid implementation of domain specific languages
DSL'97 Proceedings of the Conference on Domain-Specific Languages on Conference on Domain-Specific Languages (DSL), 1997
Proceedings of the twenty-second IEEE/ACM international conference on Automated software engineering
Stable, flexible, peephole pretty-printing
Science of Computer Programming
Linear, bounded, functional pretty-printing
Journal of Functional Programming
COMPASS: A Community-driven Parallelization Advisor for Sequential Software
IWMSE '09 Proceedings of the 2009 ICSE Workshop on Multicore Software Engineering
Electronic Notes in Theoretical Computer Science (ENTCS)
Traceability-based incremental model synchronization
WSEAS Transactions on Computers
Isabelle as document-oriented proof assistant
MKM'11 Proceedings of the 18th Calculemus and 10th international conference on Intelligent computer mathematics
Correct-by-construction pretty-printing
Proceedings of the 2013 ACM SIGPLAN workshop on Dependently-typed programming
Hi-index | 0.00 |
An algorithm for prettyprinting is given. For an input stream of length n and an output device with linewidth m, the algorithm requires time O(n) and space O(m). The algorithm is described in terms of two parallel processes: the first scans the input stream to determine the space required to print logical blocks of tokens; the second uses this information to decide where to break lines of text; the two processes communicate by means of a buffer of size O(m). The algorithm does not wait for the entire stream to be input, but begins printing as soon as it has received a full line of input. The algorithm is easily implemented.