The frontEnd system, as a product, is cultivated from two previous systems.One of them is Sage++, developed by University of Indiana. Its data structure for internal representation is our starting point for our IR (after comparing with a different philosophy such as employed in ParaSoft Fortran 90 front-end, which is heavily language dependent.) The major rationals for this decision include
- It supports interoperability among different languages.
- It makes it posibile to extend the existing Sage utilities and library.
though this has brought us some problems, particularly in the complexity in defining specific data structure for each language construct/element. We need to greatly extend the current Sage definitions (it only supports F77 and partially F90) while maintaining compatibility with it.
Another one is a Fortran 90 to FORTRAN 77 translator developed at Harbin Institute of Technology(HIT). The translator takes as input Fortran 90 source code, and translates it (without building an internal representation) into FORTRAN 77 code. Although some limitations existed in the translation (such as recursive procedures), Fortran 90 syntax is covered pretty well in its grammar rules. We did not adopt Sage's parser since we consider
- its yacc rules does not covered enough grammar;
- its lexer is written in C, which is hard to extent.
Email contact: zgs@npac.syr.edu