The Expression of Algorithms by Charts
Journal of the ACM (JACM)
Characterizations of Reducible Flow Graphs
Journal of the ACM (JACM)
Structured Programming with go to Statements
ACM Computing Surveys (CSUR)
A system for typesetting mathematics
Communications of the ACM
Communications of the ACM
On the capabilities of while, repeat, and exit statements
Communications of the ACM
Letters to the editor: go to statement considered harmful
Communications of the ACM
Böhm and Jacopini's reduction of flow charts
Communications of the ACM
Flow diagrams, turing machines and languages with only two formation rules
Communications of the ACM
The theory of parsing, translation, and compiling
The theory of parsing, translation, and compiling
Structured programming
Eliminating go to's while preserving program structure
Journal of the ACM (JACM)
ICS '88 Proceedings of the 2nd international conference on Supercomputing
Detecting equality of variables in programs
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A Control-Flow Normalization Algorithm and its Complexity
IEEE Transactions on Software Engineering
On slicing programs with jump statements
PLDI '94 Proceedings of the ACM SIGPLAN 1994 conference on Programming language design and implementation
Avoidance and suppression of compensation code in a trace scheduling compiler
ACM Transactions on Programming Languages and Systems (TOPLAS)
Interactive control restructuring
SETA2 Proceedings of the second international symposium on Environments and tools for Ada
Precise interprocedural dataflow analysis via graph reachability
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Understanding natural programs using proper decomposition
ICSE '91 Proceedings of the 13th international conference on Software engineering
Limited exception modeling and its use in presynthesis optimizations
DAC '97 Proceedings of the 34th annual Design Automation Conference
HDL code restructuring using timed decision tables
Proceedings of the 6th international workshop on Hardware/software codesign
Compiling Esterel into sequential code
CODES '99 Proceedings of the seventh international workshop on Hardware/software codesign
A Comparison of Multilevel break and next Statements
Journal of the ACM (JACM)
Automatic Program Improvement: Variable Usage Transformations
ACM Transactions on Programming Languages and Systems (TOPLAS)
Jump Minimization in Linear Time
ACM Transactions on Programming Languages and Systems (TOPLAS) - Lecture notes in computer science Vol. 174
Design of the S system for data analysis
Communications of the ACM
Communications of the ACM
Syntactic source to source transforms and program manipulation
Communications of the ACM
Decompile Java class files with soot! (poster session)
OOPSLA '00 Addendum to the 2000 proceedings of the conference on Object-oriented programming, systems, languages, and applications (Addendum)
Prime subprogram parsing of a program
POPL '80 Proceedings of the 7th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Dependence graphs and compiler optimizations
POPL '81 Proceedings of the 8th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Optimal code for control structures
POPL '82 Proceedings of the 9th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The Advantages of Instance-Wise Reaching Definition Analyses in Array (S)SA
LCPC '98 Proceedings of the 11th International Workshop on Languages and Compilers for Parallel Computing
Decompiling Java Bytecode: Problems, Traps and Pitfalls
CC '02 Proceedings of the 11th International Conference on Compiler Construction
ICSE '81 Proceedings of the 5th international conference on Software engineering
Proceedings of the SIGNUM Conference on the Programming Environment for Development of Numerical Software
Toolpack - an experimental software development environment research project
ICSE '82 Proceedings of the 6th international conference on Software engineering
ACM SIGACT News
A brief survey of program slicing
ACM SIGSOFT Software Engineering Notes
A Multiple-Clause Folding Rule Using Instantiation and Generalization
Fundamenta Informaticae - Program Transformation: Theoretical Foundations and Basic Techniques. Part 2
Ablego: a function outlining and partial inlining framework: Research Articles
Software—Practice & Experience
Krakatoa: decompilation in java (dose bytecode reveal source?)
COOTS'97 Proceedings of the 3rd conference on USENIX Conference on Object-Oriented Technologies (COOTS) - Volume 3
Generalized structured programs and loop trees
Science of Computer Programming
A method for automatically analyzing programs
IJCAI'79 Proceedings of the 6th international joint conference on Artificial intelligence - Volume 2
The Fortran parallel transformer and its programming environment
Information Sciences: an International Journal
Advanced symbolic analysis for compilers: new techniques and algorithms for symbolic program analysis and optimization
Enhanced structural analysis for C code reconstruction from IR code
Proceedings of the 14th International Workshop on Software and Compilers for Embedded Systems
Structural analysis: A new approach to flow analysis in optimizing compilers
Computer Languages
Structured flowcharts for multiprocessing
Computer Languages
A Multiple-Clause Folding Rule Using Instantiation and Generalization
Fundamenta Informaticae - Program Transformation: Theoretical Foundations and Basic Techniques. Part 2
A hybrid approach for resource-based comparison of adaptable Java applications
Science of Computer Programming
Whalesong: running racket in the browser
Proceedings of the 9th symposium on Dynamic languages
SEC'13 Proceedings of the 22nd USENIX conference on Security
Hi-index | 0.05 |
This paper describes an algorithm which transforms a flowgraph into a program containing control constructs such as if then else statements, repeat (do forever) statements, multilevel break statements (causing jumps out of enclosing repeats), and multilevel next statements (causing jumps to iterations of enclosing repeats). The algorithm can be extended to create other types of control constructs, such as while or until. The program appears natural because the constructs are used according to common programming practices. The algorithm does not copy code, create subroutines, or add new variables. Instead, goto statements are generated when no other available control construct describes the flow of control. The algorithm has been implemented in a program called STRUCT which rewrites Fortran programs using constructs such as while, repeat, and if then else statements. The resulting programs are substantially more readable than their Fortran counterparts.