This is for projects who use propagation graphs, like the propagation graph highlighting project. The objects described in *.trv files are sentences of class Traversal_graph = "Traversal" "directive" ":" ... and *.trn files are sentences of class Transportation_graph = "Traversal" "directive" ":" ... The complete definitions are below. // The class dictionaries which define the inputs to our tools are // available with the following copyright notice: // Copyright (C) 1985-1993 Northeastern University. // Permission is granted to any individual or institution to use, copy, modify, // and distribute this class dictionary, provided that this complete copyright // and permission notice is maintained, intact, in all copies and supporting // documentation. ///////////////////////////////////////////////////////////////////////////////////// // $Log: cd.cd,v $ // Revision 5.4.1.4 1994/02/25 21:39:02 demeter // restriction checking // // Revision 5.4.1.3 1994/02/24 20:52:21 demeter // reimplement object transportation -- cun // // Revision 5.4.1.2 1994/02/22 14:45:22 demeter // update according to the new semantics // ///////////////////////////////////////////////////////////////////////////////////// Traversal_graph = "Traversal" "directive" ":" Propagation_directive_exp "Propagation graph" "for" "traversal" ":" Propagation_schema. Transportation_graph = "Traversal" "directive" ":" Propagation_directive_exp "Transportation" "directive" ":" Propagation_directive_exp "Propagation" "graph" "for" "transportation" ":" Propagation_schema. Propagation_schema = [ "*source*" Vertex_selector *l ] [ "*target*" Vertex_selector *l ] + "*paths*" *l + Cd_graph - - *l. Cd_graph = Nlist(Adjacency) [ + "*terminal_sets*" Commalist(Vertex) "." - *l ] . Adjacency = < source > Vertex ["(" < parameters> Commalist(Vertex) ")"] < ns > Neighbors *l "." . Neighbors : Neighbors_wc | Repetit_n *common*. Neighbors_wc : Construct_ns | Alternat_ns *common* *l + + + < construct_ns > List(Any_vertex) - - - . Construct_ns = "=". Alternat_ns = ":" [ *l + + + Barlist(Term) - - - ] Common . Common = + + + "*common*" - - - . Repetit_n = "~" [ Sandwich(Kernel) ]. Kernel = [ Term ] "{" Sandwich(Term) "}". Any_vertex : Opt_labeled_term | Optional_term | Syntax_vertex | Inherit_term *common* . Vertex = < vertex_name > DemIdent. Syntax_vertex : Regular_syntax | Print_command *common*. Print_command : Print_indent | Print_unindent | Print_skip | Print_space *common*. Print_indent = "+" . Print_unindent = "-" . Print_skip = "*l" . Print_space = "*s" . Regular_syntax = < string > DemString . Opt_labeled_term : Labeled | Regular *common* [StaticSpec] [AccessorSpec] Term. StaticSpec = "*static*" . AccessorSpec : ReadOnlyAcc | PrivateAcc *common* . ReadOnlyAcc = "*read-only*" . PrivateAcc = "*private*" . Regular = . Labeled = "<" < label_name > DemIdent ">" . Inherit_term = "*inherit*" Commalist(Term). Term : Normal | CppTerm *common* Vertex TermRef. CppTerm = "$" . Normal = . TermRef : LocalRef | ModuleRef. ModuleRef : CompRef | LibRef *common* DemIdent. LocalRef = . CompRef = "@". LibRef = "@@". Optional_term = "[" Sandwich(Opt_labeled_term) "]". //////////////////////////////////////////////////////////////////////// // propagation directive expressions //////////////////////////////////////////////////////////////////////// Propagation_directive_exp : Pde | Dir_name_with_exp. Dir_name_with_exp = DemIdent. Pde = "*from*" Vertex_selector [ Path_constraint_exp ] List(Segment). Segment = Targets [ Path_constraint_exp ]. Targets = To_or_via Vertex_selector . To_or_via : To | Via | Tostop. Via = "*via*". To = "*to*". Tostop = "*to-stop*". Path_constraint_exp : Require_through | Require_bypassing. Require_through = Through_path_constraint [ Bypassing_path_constraint ]. Require_bypassing = Bypassing_path_constraint [ Through_path_constraint ]. Through_path_constraint = "*through*" Commalist(Meta_edge). Bypassing_path_constraint = "*bypassing*" Commalist(Meta_edge). Vertices_edges : Require_vertex_selector | Require_meta_edges. Require_vertex_selector = Vertex_selector [ Meta_edges ]. Require_meta_edges = Meta_edges [ Vertex_selector ]. Meta_edges = Commalist(Meta_edge). Meta_edge : Meta_construction_edge | Meta_alternation_edge | Meta_repetition_edge | Meta_inheritance_edge. Meta_construction_edge = "->" Vertex_selector "," Label_selector "," Vertex_selector . Meta_alternation_edge = "=>" Vertex_selector "," Vertex_selector . Meta_inheritance_edge = ":>" Vertex_selector "," Vertex_selector . Meta_repetition_edge = "~>" Vertex_selector "," Vertex_selector . Macro_exp = "*expand*" . Vertex_selector : Any_term | Fixed_term | Vertex_set. Any_term = "*". Fixed_term = Term. Vertex_set : Vertex_set_sim | Vertex_set_comp | Class_set_inst | Late_selected_terms. Vertex_set_sim = "{" Commalist(Fixed_term) "}" . Vertex_set_comp = Vertex_set_op Vertex_set Vertex_set ")". Vertex_set_op : Union | Intersect. Union = "(*union*". Intersect = "(*intersect*". Class_set_inst = Class_set_name. Class_set_name = "*class-set*" DemIdent . Late_selected_terms = "(*class-set*" Propagation_directive_exp ")". Label_selector : Any_edge_label | Relation_meta_var | Label_set. Label_set = "{" Commalist(Relation_meta_var) "}". Any_edge_label = "*". Relation_meta_var = DemIdent. ///////////////////////////////////////////////////////////////////////////////// // parameterized classes ///////////////////////////////////////////////////////////////////////////////// List(S) ~ {S}. Nlist(S) ~ S { *l S} *l . Barlist(S) ~ S {"|" *l S}. Commalist(S) ~ S {"," S}. Amplist(S) ~ S { *l S } . Sandwich(S) = List(Syntax_vertex) S List(Syntax_vertex) .