Specification: RigiRSFSpecification _Errata:_ In a =source-location= the elements are separated with comma, not semicolon. _Errata for "Appendix: Tool Support":_ =rigiedit= can also read Stuctured RSF. The specification discusses the following RSF formats: * (3-tuple) Unstructured RSF * Partly structured RSF * Stuctured RSF * 4-tuple unstructured RSF You have to be careful about the format transformation that the tools perform. _If you run =htmlrsf= and =sortrsf= without command line args, they change 4-tuple unstructured RSF to (3-tuple) unstructured RSF!_ See also RigiUserManual, Section 4.7.1. See also http://calla.ics.uci.edu/reveng/toolbase/moin.cgi/RSF. --- Typically an RSF file adheres to a certain schema. For example, an RSF file generated with =cparse= will adhere to the _cparse_ schema. The schema is documented in 3 files: * =Riginode=: The node types * =Rigiarc=: The arc types * =Rigiattr=: The node and arc attributes =rigiedit= expects a directory with the name of the domain containing these files at =$RIGI/Rigi/domain=. See RigiUserManual, Section 4.4. (There is a bit more information in Scott Tilleys Ph.D. Thesis "Domain-Retargetable Reverse Engineering", Section A.2.3, page 126f.) --- *Sample RSF Files* Unstructured RSF: * Mozilla: http://www.rigi.csc.uvic.ca/rigi/mozilla/mozilla.rsf.sorted.gz (cparse domain) * gnuplot: http://www.cs.ubc.ca/~murphy/cpsc507/winter01/schedule/gnuplot.rsf (cparse domain) * Linux: http://plg1.cs.uwaterloo.ca/~itbowman/rsf/ (extracted with cfx, unknown domain) Structured RSF: * List demo: =$RIGI/Rigi/db/list-d/rsf= (c domain) * Ray demo: =$RIGI/Rigi/db/ray-d/rsf= (c domain) * SQL/DS demo: =$RIGI/Rigi/db/arixi-d/rsf= (plas domain) --- *RSF Generators* * from C++ * Columbus/CAN * http://www.frontendart.com * http://calla.ics.uci.edu/reveng/toolbase/moin.cgi/Columbus_2fCAN * =vacppparse= based on IBM VisualAge C++ * from Java * SHriMP Java Extractor * jCosmo * http://www.cwi.nl/projects/renovate/javaQA/instructions.html * http://calla.ics.uci.edu/reveng/toolbase/moin.cgi/jCosmo --- *RSF Querying and Manipulation* The structure of RSF enables easy manipulation with standard UNIX text processing tools. For more formal manipulation of RSF you can use Dirk Beyer's CrocoPat tool: http://www.cs.sfu.ca/~dbeyer/CrocoPat/ --- CategoryRigi