Sean Halle
04/12/2009 09:00 AM
Computer Engineering
Programmer efficiency, computational efficiency, and automatic portability with high performance are major goals for parallel software. It would be nice to have a language that advanced these goals. In one approach, such a language would have graphical syntax and allow custom graphical notation to be added by the application programmer. It would also have an automated mechanism that specialized a single source to multiple hardware platforms, enabling high performance on a variety of parallel hardware. It would also have the feel of a flexible interpreted language but the efficiency of a compiled one.
Toward this end we propose a language with several features: its source form is a syntax graph; the visual representation is generated, which allows arbitrary graphics as syntax; it is based on a re-writing system, which enables easy syntax extensions; and its syntax graph is property-based, which enables symbolic manipulation of primitive as well as extended syntax. The proposed language lies on top of the CTOS OS abstraction layer, which brings portability and automatic specialization.
It has three separate mechanisms for extending the language with custom notation. The first is a fairly straight forward adaptation of
term-rewriting. The second uses active entities (processors) in the
development environment to on-the-fly generate the term-rewriting rule. The third introduces an explicit symbol for the creation of a processor from source code, and defines a standard processor type called a "sourceManipulator". SourceManipulators take in a syntax graph and produce a manipulated syntax graph as output, which can then be on-the-fly compiled, run, and wired-in, by sending the new graph through a creator to create a processor from it. This feature gives the feel of an interpreted language.
We describe the syntax, features, and possible implementation of the proposed language, which is called EQNLang.