Jun - Compiler Backend Generation System

Jun is a generator for compiler backends, whose specification is described in an extended Attribute Grammar, Circular Remote Attribute Grammar.

Attribute grammar (AG) is a suitable formalism for development of language processing systems. However, for languages including unrestricted labeled jumps, like "goto"s in C, optimizers in compilers are hard to be written in AG. This is due to two problems which former researches could not deal with simultaneously, i.e., references of attribute values on distant nodes and circularity in attribute dependency.

To overcome this deficiency, we proposes the circular remote attribute grammar (CRAG), an extended AG which allows

This extension gives AG programmers a natural way to describe language processors and programming environments for languages including any type of labeled jumps. We have also studied a way to construct a static evaluator for CRAGs that has efficient run-time performance, which has been implemented in an experimental generator, Jun. As its applications, we have developed SSA transformation and some SSA-based optimizers that are a part of our compiler for a subset of C language.

Reference

Sasaki, A. and Sassa, M.:
Circular Attribute Grammars with Remote Attribute References, In Parigot, D. and Mernik, M. (ed.) Proc. WAGA'2000 - 3rd Workshop on Attribute Grammars and their Applications, INRIA , pp. 125-140 (Jul. 2000).