Graphite Reference Manual

MANY OF THE DATA OBJECTS MANIPULATED BY SOFTWARE SYSTEMS ARE `GRAPHS''. MOREOVER, AN INDIVIDUAL INSTANCE OF A GRAPH MAY BE SHARED BY SEVERAL DIFFERENT COMPONENTS OF A SYSTEM. FOR EXAMPLE, IN A SOFTWARE DEVELOPMENT ENVIRONMENT, PARSE TREES, ABSTRACT SYNTAX TREES, CONTROL FLOW GRAPHS, AND CALL GRAPHS ARE ALL CLASSES OF GRAPHS THAT ARE LIKELY TO BE MANIPULATED BY TOOLS IN THE ENVIRONMENT; AN ABSTRACT SYNTAX TREE MAY BE CREATED BY A SYNTAX ANALYZER, MODIFIED BY A SEMANTIC ANALYZER, AND REFERENCED BY A PRETTY PRINTER, AMONG OTHER TOOLS. WE EMPLOY THE FOLLOWING TERMINOLOGY FOR GRAPHS. A `CLASS'' OF GRAPHS IS DEFINED BY SPECIFYING A SET OF `NODE KINDS''. EACH NODE KIND IS ASSOCIATED WITH A SET OF `ATTRIBUTES''. ATTRIBUTES ARE USED TO DESCRIBE THE PROPERTIES OF THE OBJECTS REPRESENTED BY THE NODES IN THE GRAPH, AND EACH SUCH ATTRI- BUTE HAS A TYPE, REFERRED TO HERE AS AN `ATTRIBUTE TYPE''. SOME OF THE ATTRIBUTE TYPES ARE ACTUALLY NODE KINDS, WHICH MAKES IT POSSIBLE TO CONNECT NODES INTO GRAPH STRUCTURES. AN INSTANCE OF A NODE KIND IS A SET OF VALUES, ONE FOR EACH ATTRIBUTE ASSOCIATED WITH THAT NODE''S KIND. A PARTI- CULAR GRAPH, WHICH IS A MEMBER OF SOME CLASS OF GRAPHS, IS THEN JUST A SET OF INSTANCES OF NODE KINDS IN THAT CLASS. GRAPHITE IS A TOOL INTENDED TO AID IN THE DEVELOPMENT, REUSE, AND DOCU- MENTATION OF GRAPH DATA OBJECTS. GRAPHITE CONSISTS OF A GRAPH DESCRIPTION