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:
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:
Structured RSF:
$RIGI/Rigi/db/list-d/rsf
(c domain)
$RIGI/Rigi/db/ray-d/rsf
(c domain)
$RIGI/Rigi/db/arixi-d/rsf
(plas domain)
RSF Generators
vacppparse
based on IBM VisualAge? C++
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/