/vertigo

An ABL-to-Lisp source-to-source compiler, plus backend implementation

Vertigo, the ABL-to-Lisp compiler

Vertigo aims to be a complete source-to-source compiler to run ABL code in a sane environment. The project will eventually include a complete runtime for compiled code, a standard code formatter (think gofmt for ABL), and a set of enhancements to the language designed to make it less less harmful for larger projects.

A Word of Warning

You probably shouldn’t use this project. Really. ABL works well enough as a domain-specific language for reporting and some basic business logic, but it’s terrible for anything else. If you’re using it outside of it’s core domain, switch to something else as soon as you can; it will save you great deal of trouble.

This project is designed to be a tool for shops that can’t afford to start a complete rewrite and need a better interop environment to do it piecemeal, or for shops that can’t or won’t migrate away and need to mitigate some of the bad engineering properties of the language.

What’s here

  • util/docstrip.py: Ugly scraping code to extract syntax definitions from the ABL dvref manual (in HTML format). This script was written with the 10.1b manual in mind, though it ought to work with others. It produces a directory per manual page, with a numbered text file containing each syntax entry in the page. A handlful of these files need to be fixed by hand before they can be used (mostly places where the language uses a character that’s part of the syntax-description language, like “{“).
  • ablisp.lisp: Bootstrap compiler to turn the directory tree produced by docstrip.py into a parser skeleton using the meta-sexp library. Entries are separated by category, and comments are included with information from the manual where possible.
  • parser/: The parser skeleton generated by ablisp.lisp from the 10.1b manual.