Program-Transformation.Org: The Program Transformation Wiki
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:
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
-
vacppparse
based on IBM VisualAge? C++
- from Java
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