Textual Class Dictionary
UseCase3
//
// Modification History:
//
// 11/28/95 10:30 am by Ron Westberg (westber)
// Added edges "defaultConstEdge" and "defaultAltEdge" from Graph to
// ConstEdge and AltEdge, respectively. This allows us to initalize a
// ConstEdge object or an AltEdge object, then fill in the data of that
// object and then add it to the Graph appending onto the Edge_List.
//
//
// 11/26/95 by Peter
// Added new classes for constructing and printing a CDG
// COM1205 Class Dictionary - DemDraw Application
//
//
// 11/22/95 7:42 pm by Ron Westberg (westber)
// Added edges "defaultConstVertex" and "defaultAltVertex" from Graph to
// ConstVertex and AltVertex, respectively. This allows us to initalize a
// ConstVertex object or an AltVertex object, then fill in the data of
// that object and then add it to the Graph by appending onto the
// Vertex_List.
//
//
// 11/21/95 @ 9:32 pm by Tom Kneeland (tomk)
// Documented changes made for Use Case 2. These Changes include
// Changed Coordinates to have a DemString datamember, as opposed to
// two DemNumbers. It was determined that the C++ code would never have
// to change the values stored in this object, therefore we could store
// the exact string that tcl needed to draw verticies and labels. This
// change made all interaction to tcl easier.
//
// Also added a Coordinates object to support lines with
// bends. tcl will generate the actual list of points to be stored in
// this string. This datamember is optional, since lines can be strait.
//
// Made a vertex position, and a vertex name position optional. This
// allowed the demeter-input file to be modified, so that whole verticies
// did not have to be specified when declaring edges.
//
//
// 11/16/95 @ 10:00 by Ron
// added Coodinates_List and Term
// renamed vn_position to vn_offset
// renamed e_position to en_offset
//
//*****************************************************************************
//
Graph = "Class Dictionary Graph"
< vertices > Vertex_List
< edges > Edge_List
// made the following optional so we wouldn't need to change the
// demeter-input file, but would create using the cppInit.pp
[ "defaultConstVertex" < defaultConstVertex > ConstVertex]
[ "defaultAltVertex" < defaultAltVertex > AltVertex]
[ "defaultConstEdge" < defaultConstEdge > ConstEdge]
[ "defaultAltEdge" < defaultAltEdge > AltEdge] .
Edge : AltEdge
| ConstEdge
*common*
"from" < from > Vertex
[ "Bendpoints" < middlepoints > Coordinates ]
"to" < to > Vertex .
Edge_List ~ "Edge" "List" { Edge } .
Vertex_List ~ "Vertex" "List" { Vertex } .
Vertex : AltVertex
| ConstVertex
| Term
*common*
< vertexname > VertexName
[ "vertex_pos" < position > Coordinates ] .
AltEdge = "AltEdge" .
ConstEdge = "ConstEdge"
< edgename > EdgeName .
ConstVertex = "ConstVertex" .
AltVertex = "AltVertex" .
Coordinates = DemString.
VertexName = < name > DemIdent
[ "name_pos" < vn_offset > Coordinates ] .
EdgeName = < name > DemIdent
"name_pos" < en_offset > Coordinates .
Term = "TermVertex" .
// New classes for creating a Class Dictionary Graph object
Cd_Graph = < adjacencies > Cd_Adj_List .
Cd_Adj_List ~ { Cd_Adjacency } .
Cd_Adjacency = < source > Cd_Vertex < ns > Cd_Neighbors "." .
Cd_Neighbors : Cd_Construct | Cd_Alternat
*common* < construct_ns > Cd_LV_List .
Cd_Construct = "=" .
Cd_Alternat = ":" < alternat_ns > Cd_V_BarList "*common*" .
Cd_LV_List ~ { Cd_LVertex } .
Cd_V_BarList ~ Cd_Vertex { "|" Cd_Vertex } .
Cd_LVertex = "<" < label_name > DemIdent ">" < vertex > Cd_Vertex .
Cd_Vertex = < vertex_name > DemIdent .