Cross-linked documentation browser for RESOLVE/C++

Project Information

Advisor
Dr. Bruce Weide
Participants
Eugene Talagrand 
Start Date
2003 March
Project Status
Completed (2003 May)

Index:


Abstract:

The goal of this project is to develop a cross-linked documentation browser for RESOLVE/C++ projects. RESOLVE files and comments follow a strict convention as to their format. Information contained in these formats can be parsed by a program to generate cross-linked documentation. The documentation system will eventually support online documentation browsing, syntax-highlighting and cross-linking of source code, and generation of printable documentation.


Calendar:

2003 March
The documentation system will be implemented as a 'just-smart-enough' preprocessor for Doxygen, as well as a syntax-highlighter, a configuration file, a translation of Doxygen for 'RESOLVE-speak' and a few judiciously applied patches.
2003 March
Function and procedure parsing complete
2003 April
Patching Doxygen is abandonned. After a full week of intense dissection of the code, it is the author's opinion that Doxygen's architechture is ill-suited for manipulation of custom languages and formats. The project is too large, with too many byzantine patches for functionality to allow for modification for the RESOLVE course sequence. A new approach is being considered by greatly enhancing the preprocessor and developping a translator into 'RESOLVE-speak'.
2003 April
A great difficulty in writing the preprocessor is maintaining the line-count. Every element declaration must remain on the same line to allow proper cross-referencing.
2003 April
Files, abstract definitions and math models added.
2003 May
A bug in Doxygen regarding matching large numbers of template class declarations and definitions is preventing this project from moving forward. Segmentation faults abound, and templated method declarations and implementations are improperly matched.
Onwards
New tools could be considered for this project, including Synopsis, OpenC++ and GCC-XML (see Links and References for project homepages). The status of this project has been re-evaluated.

Project Development:

Many past Europa projects have attempted to parse RESOLVE to acheive some ends. This is a very ambitious goal which was not attempted. The source code is being preprocessed into 'C++ with less macros' + 'comments'. The RESOLVE macros and comments are being combined and translated to form Doxygen-formatted comments. The preprocessor is being implemented as a three-state parser: pure code, string literals, and comments. Regular expressions are applied on the source code for processing. Very basic state information is being kept such as which class is being processed currently and which method comments refer to. C++ -isms in Doxygen are being removed by the means of translation of the program into a new language other than English: 'RESOLVE-speak'.


Findings and Contributions:

The generated BugsWorld Catalogue documentation (as generated by Doxygen 1.3.5-cvs) can be viewed at www.cis.ohio-state.edu/europa/projects/0062/bugsworld/.

The generated RESOLVE Catalogue documentation (as generated by Doxygen 1.3-rc3) can be viewed at www.cis.ohio-state.edu/europa/projects/0062/resolve/.


The tools used to generate these files can be downloaded here: resolve2dox.tar.gz.
These include most notably the resolve2dox.pl source code filter, a modified version of Dr. Bucci's rcpp2html, and a preconfigured Doxyfile. Doxygen and AT&T's Graphviz are needed for operation.


Current State and Future Directions:

A basic preprocessor for RESOLVE/C++ has been developped and was used to generate documentation. However, several difficulties were encountered during this project. A bug in the underlying third-party tools prevents the full RESOLVE catalogue from being properly parsed. Some reasons for this include improper matchings of templated method declarations and implementations. Another factor is that small variations in the current RESOLVE/C++ component catalogue make machine processing difficult. The most limiting factor for this project, however, is that Doxygen cannot handle prototypes (inserted into the documentation) in RESOLVE-format. This means that even when writing a translation of Doxygen into 'RESOLVE-speak', the resulting documentation will be too C++ -oriented for production use. Future work could include writing an input processor for Synopsis (see Links and References) to handle RESOLVE. Synopsis has true support for pluggable input languages.


Links and References:


Picture of Europa, one of Jupiter's
moons Return to Europa

Level Triple-A conformance icon, W3C-WAI Web Content Accessibility Guidelines 1.0   Bobby WorldWide Approved   Bobby WorldWide Approved 508  
Eugene Talagrand <talagran@cis.ohio-state.edu>
Last modified: Mon Mar 22 17:24:50 2010