Eagle Legacy Modernization, LLC

Back to main page

Published Papers:

  1. Programmars: A Revolution in Computer Language Parsing
  2. Toward Effective Management of Large-Scale Software
  3. Improving Programming Language Transformation
  4. Modernizing Parsing Tools

Programmars: A Revolution in Computer Language Parsing
Dr. Steven A. O'Hara
SERP '15; July 30, 2015; Las Vegas, Nevada

This paper presents a revolutionary way to parse computer programming languages without a traditional grammar. The motivation behind this approach is to dramatically increase scalability. The intention is to be able to parse and analyze billions of lines of code written in hundreds of programming languages. To achieve that goal, it is advantageous to have sharable, open-source, modular ways for defining the syntax and semantics of programming languages. The new parsing technique replaces a traditional grammar with a computer program, referred to as a Programmar (short for program and grammar). All the basic operations in BNF (sequencing, alternation, optional terms, repeating and grouping) are supported, and the Java code is both sharable and modular. This parsing approach enables dozens or even hundreds of developers to work on computer program analysis concurrently, while avoiding many of the consistency issues encountered when building grammars and associated code analysis tools.

Click here to view the full paper (7 pdf pages).

Toward Effective Management of Large-Scale Software
Dr. Andrew J. McAllister and Dr. Steven A. O'Hara
SER&IP '16; May 17, 2016; Austin, Texas

This paper outlines challenges the authors have faced over decades of industrial experience with large-scale software analysis and maintenance projects (especially legacy modernization) for multiple organizations where millions of lines of source code are involved. Such projects require large teams cooperating on parsing, analyzing, and manipulating source code. In this context the use of traditional parsing techniques based on context-free grammars has proven problematic. We present the Programmar API, a recently developed parsing approach designed to overcome these problems. This paper describes the industrial experiences that led to our R&D activities. The Programmar approach is designed to enable large teams to effectively extract complete, accurate, up-to-date information from application source code, and to provide this information as the basis for a wide variety of software management tools and activities. We present a framework that relates various types of such activities, and describe a vision for how the Programmar approach can provide significant benefits for the software industry in the future via an open-source distribution approach. This paper is intended to serve as an example of how challenges faced by industry can stimulate research, and as a catalyst for discussion of industry needs and potential future research directions.

Click here to view the full paper (7 pdf pages).

Improving Programming Language Transformation
Dr. Steven A. O'Hara
SERP '18; July 30, 2018; Las Vegas, Nevada

Modernizing legacy computer programs is challenging. This paper introduces a generalized framework for language transformation with three main elements. First, target languages are shielded from the transformation process by a collection of interfaces such as "create an if statement." Transforming from Delphi is the same whether the target is Python, Java, C# or some other language that implements the interfaces. Second, the framework ensures synchronization between source language grammars and transformation tools, so changes to a grammar cannot be made without adjusting the impacted tools. This allows large scale transformation projects where both the grammars and the tools are under concurrent development. Third, source code generation is accomplished by adding output formatting annotations to the target language grammar.

Click here to view the full paper (7 pdf pages).

Modernizing Parsing Tools
Parsing and Analysis with Object-Oriented Programming
Dr. Steven O'Hara and Dr. Rocky Slavin
SOAP '19; June 22, 2019; Phoenix, Arizona

Software Engineering tools today are hampered by weaknesses in parsing and analysis tools. For example, there are no standard repositories of grammars for the most popular programming languages. If an organization has software written in Python, Java, Bash, SQL, HTML, CSS, JavaScript and so on, there is no readily available mechanism to parse and analyze all of the software in a unified manner. This paper describes a collection of tools for parsing and analyzing many different languages, including legacy languages like COBOL and Fortran. The primary goal is scalability; dealing with a single programming language and a limited number of programs is far simpler than dealing with millions of lines of code written in many different languages.

Click here to view the full paper (6 pdf pages).