value, name and uuid. The Sibon representation and
related programs can be compiled and executed. The
Scala programs trigger instantiation one after another
and instantiate all Java objects.
2.5 Current Implementation
The implementation work has been performed on an
Apple MacBook with Mac OS X 10.6.3, Scala 2.7.7,
and Java 1.6.0 17. The program generator Sibgen is
written in Scala. It reads a Sibon definition file, gen-
erates a Scala program to set up, and generates Java
classes corresponding to all elements.
The Sibon representation changes to graph-
structured data using unique identifiers and refer-
ences. When a Java program, using Sibon APIs,
writes graph-structured objects to a file, the objects
with cyclic paths need only be written once. Sibon
APIs correctly serialize and deserialize them using the
algorithm mentioned in the paper(Birrell et al., 1993).
3 SUMMARY
This paper describes the development of Sibon, a new
data representation for graph data structures that uses
Scala syntax. One of its important features is that
the representation is executable. A program gener-
ator Sibgen for Sibon was also developed to create
programs from data definitions. It is useful for the
development of Java programs to read/write Java ob-
jects from/to persistent storage media, or to traverse
the structured data.
In the author’s experience, Sibon improves pro-
ductivity in the design and implementation of pro-
grams that manipulate graph data structures. Sibon
and its related tools are now being used for the devel-
opment of commercial products, including a compiler
front end. Research and development of Sibon will
continue to support creation other commercial soft-
ware products. The results will be published in a fu-
ture paper.
ACKNOWLEDGEMENTS
This research has been supported by the Kayamori
Foundation of Informational Science Advancement.
REFERENCES
Aho, A. V., Lam, M. S., et al. (2006). Compilers : Princi-
ples, Techniques, and Tools. Pearson Education, 2nd
edition.
Badros, G. (2000). JavaML: A Markup Language
for Java Source Code. In 9th International
World 9th International Wide Web Conference,
http://www9.org/w9cdrom/index.html.
Birrell, A., Nelson, G., et al. (1993). Network objects. In
14th ACM Symposium on Operating Systems Princi-
ples, pages 217–230.
Fowler, M. (2009). MF Bloki: Domain Specific Language.
http://martinfowler.com/dslwip/.
Franz, M. and Kistler, T. (1997). Slim Binaries. Communi-
cations of the ACM, 40(12):87–94.
Jonathan I. Maletic, M. C. and Kagdi, H. (2004). Lever-
aging XML Technologies in Developinging Program
Analysis Tools. In 4th International Workshop on
Source Code Analysis and Manipulation, pages 80–
85.
Katsuhisa Maruyama, S. Y. (2004). A CASE Tool Platform
Using an XML Representation A CASE Tool Platform
Using an XML Representation of Java Source Code.
In 4th International Workshop on Source Code Analy-
sis and Manipulation, pages 158–167.
Martin Odersky, Lex Spoon, B. V. (2008). Programming in
Scala: A Comprehensive Step-by-step Guide. Artima.
Mernik, M., Heering, J., and Sloane, A. M. (2005). When
and How to Develop Domain-Specific Languages.
ACM Computing Surveys, 37(4):316–344.
Snodgrass, R. (1989). The Interface Description Language:
Definition and Use. Computer Science Press.
Wilson, R. P., French, R. S., et al. (1994). SUIF: an Infras-
tructure for Research on Parallelizing and Optimizing
Compilers. SIGPLAN Notices, 29(12):31–37.
A SCALA-BASED DOMAIN SPECIFIC LANGUAGE FOR STRUCTURED DATA REPRESENTATION
299