Progress on the ABAP Lisp interpreter

Since announcing the ABAP Lisp interpreter on SCN last week, I have made a few commits to the ABAP Lisp repo. I was rather chuffed to get some positive response on the article, and it does provide a bit more motivation to keep working on it.

For a while, I was spending some time on an editor for ABAP Lisp, which I want to combine with my ABAP registry for storage and retrieval of scripts. This is proving to be a rather tedious task, as I was first messing about with the idea of using the Scintilla Text Editor, for which I found an ActiveX/OCX wrapper; the idea being that I could use the control framework to place it inside the ABAP GUI. That idea quickly gave way to using using the Ace editor inside a CL_GUI_HTML_VIEWER instance. Although it is more lightweight, it has posed problems of its own, so I am really not very far with it yet, especially not at the point of showing a screenshot. (One bonus is that it seems to work in the Platin/Java GUI). Oh yes, I decided not to use the code or text GUI control because I wanted some more features like highlighting and parens matching.

So after all of that, I decided to get back to the interpreter first, as that requires quite a lot of work. I have even started a specification document with which I am tracking ideas. After having added some features like string support, single quote syntax and Scheme function shorthand, I see that in order to make function calls practical (as that is what I am tackling first), there is a lot of work to be done in terms of integration to ABAP data and structures.

I don’t expect that this is going to ever be enterprise-grade stuff, but apart from having fun doing it, I hope that at least developers will have some use for it. The main benefit I see from having this is the ability to have an interpreter with which to interact with an ABAP application server; i.e. being able to write scripts and applications without the need for compiling them, meaning that one could possibly use this for things such as data loads or running tests.

I am working on a number of built-in types and functions to interact with ABAP data. It’s a bit early to show examples of how it will work, so I won’t give any examples yet.

The things that are kind of holding me back a little are that I am not an experienced Lisper, nor a computer scientist, although this is teaching me more about Lisp than I ever learned from puttering with it here and there. Also, it is a great way to learn about interpreters and such.