Uniform Abstract Syntax

Period of Performance: 05/14/2004 - 11/10/2004


Phase 1 SBIR

Recipient Firm

Architecture Technology Corp.
9971 Valley View Road Array
Eden Prairie, MN 55344
Principal Investigator


The differences between the abstract syntax (as opposed to the concrete syntax) of programming languages are mostly issues of binding. Architecture Technology Corporation proposes an abstract syntax representation that represents binding explicitly and uniformly for programming languages. The syntax can express differences in variables, scopes, and parameter passing. It can express differences in object systems and module systems. It can express generics and type systems. The abstract syntax has a simple but very expressive semantics based on a typed functional/object calculus. It employs higher-order abstract syntax (as found in lambda-Prolog) to represent binding sites uniformly; and uses explicit staging (as found in MetaML) to represent binding times uniformly. The abstract syntax has an external representation as valid XML documents. The design of transformation and unparsing tools to handle higher-order, multi-stage syntax is considered.