Codeparse group

Welcome to the Code Parse Group! Be sure to subscribe, and don't forget to click "my subscription" if you want to subscribe to the mailing list.


Statements and Functions

This section is speculative, and subject to change.

Here, for discussion sake, I'd like to describe the semantics of an OpenEdge application in terms of two broad categories.

The first is basic expressions and control flow. These are things that can be represented by any language, and includes looping and conditional branching. These will be represented explicitly in our IR.

The second is platform runtime support. Most statements and functions in 4GL/ABL are not simple expressions or control flow, but instead are direct references to the OpenEdge platform runtime support. Those statements and functions will likely be represented in our IR by calls to stubs, that is, calls to unimplemented subroutines.


About

Automated Code Transforms (Automated Refactoring)

Refactoring is the act of improving your source code without changing its behavior. So - your business logic stays intact, but something in the source code gets improved which makes it easier to work with, more portable to other platforms, easier to translate...

Refactoring deals with things that are tedious, time consuming, and ultimately, expensive. These are things that should be automated! We can build you the automated transform tools that you need to save you weeks or months of effort.


Motivation

So why, exactly, do we want to do all this weird stuff?

The motivation comes from a surprisingly large number of goals, all of which depend on more thorough analysis of control flow and data flow in existing applications.

Prolint certainly comes to mind. There are many types of static code checking that could be done with more complete control and data flow analysis. For example, checking for problematic transaction scopes that span multiple compile units is difficult or impossible without a complete grasp of control flow.

Reverse engineering existing 4GL/ABL applications can hardly be considered complete without full data flow analysis. Work flow for data through an application is key to how well that application can be understood, yet there just aren't any tools which gather this information in a complete and detailed fashion.


Links and Reference Materials

Appel's book Modern Compiler Implementation in Java (second edition), is a likely candidate for a guideline for our new IR. It also leads directly into some of the analysis techniques that we will want to get into, including the use of SSA form (see below). The MiniJava project source code, especially the "Tree" package, may be a useful starting point.

Static Single Assignment form is an IR form which is ideal for the kinds of flow analysis that we want to perform.


New AST

These pages are for exploring ideas and designing a new AST and/or "Intermediate Representation" tree for further semantic analysis of 4GL/ABL source code.

The output of Proparse and ProRefactor will be used to generate an IR tree which is more appropriate for control flow, data flow, and other kinds of analysis.


Prolint/Eclipse

John has started some initial work on a Java/Eclipse variant of Prolint. This variant of Prolint has the advantage of easy access to ProRefactor's output - especially its symbol tables and scoping information.

Questions about getting the original Prolint into Eclipse, and other "project direction" type questions, are completely unanswered. It's all very open for you to dive in, write some code, and help determine how best to make Prolint an integral part of working with 4GL/ABL in Eclipse and OpenEdge Architect.


Review Changes dialog, screen width

Using screen width doesn't work well in Review Changes dialog if using dual monitors - screen width is huge.


Proparse Treeview

Proparse Treeview

Proparse Browser screenshot

Proparse Browser screenshot

Proparse tree browser in SWT

Proparse tree browser in SWT

PRO/Dox Wireframe 2

PRO/Dox Wireframe 2

PRO/Dox Wireframe 1

PRO/Dox Wireframe 1

PRO/Dox Screenshot 1

PRO/Dox Screenshot 1

Review Changes Dialog

Review Changes Dialog
#
Syndicate content