Other Harmonia Applications

In addition to Harmonia-Mode, our flagship end-user application, and Blender, our lexer and parser generator, the Harmonia project is working on several other small applications that utilize the Harmonia analysis framework.

Batch Front End (BFE)

BFE is a Tcl application that allows you to run lexing, parsing and semantic analysis over a particular input file. It outputs how many warnings and errors occurred while processing the file. This program's source code demonstrates how to connect to the Harmonia language kernel via the Tcl language bindings.

Syntax Tree Viewer

One of our internal debugging applications is a syntax tree viewer written in Tcl/Tk (using Harmonia bindings for the Tcl language). While our current viewer works well, it has several important shortcomings. First, it lacks many useful features that Harmonia programmers would love to have. Second, it is limited to displaying trees, whereas Harmonia syntax trees may include graph-like parts. Finally, it uses an antiquated tree-drawing library which is inefficient and is no longer maintained by its author.

We are building a new syntax tree viewer application in Tcl using a more advanced graph layout library called GraphViz. We are also exploring the possibility of using OpenGL for scalable visualization of large syntax tree.

Spoken Java Translator

One of the goals of Harmonia is to support spoken programming, essentially using voice recognition to write and edit code. Part of this support involved creating a dialect of Java called Spoken Java, which is easier to say. Spoken Java is grammatically isomorphic to Java (and semantically identical), but many of the keywords and ordering of concrete syntax has been changed.

In order to enable our speech recognizer to easily understand Spoken Java, we are creating a corpus of Spoken Java programs by translating existing Java programs to the new dialect. We built a Java to Spoken Java translator (and vice versa) and are currently creating a dictation training file for IBM ViaVoice based on these translated programs.

Ladle to ViaVoice Grammar (SRCL) Translator

One of our projects uses IBM ViaVoice to provide speech recognition services to XEmacs. Just as we describe a programming language grammar using Ladle, ViaVoice provides a grammar description language to support spoken command languages called SRCL. Ladle and ViaVoice's descriptions are similar but not compatible.

Brian Chin has written a tool to convert Ladle grammar descriptions into ViaVoice grammar descriptions and wrote the SRCL language module for Harmonia.