Demeter is in /export/tools/demeter/master Running semantic checker ... /export/tools/demeter/master/bin/sem-check -i cd.cd sem-check: created the directory notmod. sem-check: created the directory notmod/cds. sem-check: created the directory notmod/tmp. Checking that if a class is used without a label, then the name of this class must contain at least one capital letter ... Checking that the first production is an unparameterized construction production ... Checking that every class is defined exactly once ... Checking that two class names on the right hand side of every repetition production are identical ... Checking that every parameterized class is consistently defined and used ... Checking that formal parameter classes are not used as parameterized classes on the right hand side ... Checking that every alternative of a parameterized alternation class has to use all its formal parameters in the same order ... Checking inheritance cycles ... Expanding parameterization ... sem-check: notmod/cds/cd-param-exp created. Checking that all alternatives are defined as either construction classes or alternation classes that will eventually be defined by construction classes ... Checking whether the class names and label names are the keywords of C++ Demeter... Expanding common parts ... Expanding inherit classes ... sem-check: notmod/cds/cd-inh-exp created. Checking that the part names of every vertex are unique ... sem-check: notmod/cds/cd-com-exp created. sem-check: notmod/cds/cd-parse created. sem-check: notmod/cds/cd-print created. Checking the Inductiveness Axiom... Checking whether there is some left recursion ... Checking LL1 conditions ... Computing first sets ... Computing follow sets ... printing first sets and follow sets into cd-ffsets... sem-check: notmod/cds/cd-ffsets created. Checking LL1 conditions ... sem-check: notmod/cds/cd-ll1-corrected created. Semantic check passed. make[1]: Entering directory `/export/tools/demeter/master/self-test/generated' Running C++ code generator ... /export/tools/demeter/master/bin/generate SI UNKNOWN "" generate: creating intermediate notation in notmod/cds/cd-inter ... generate: creating /export/tools/demeter/master/self-test/generated/notmod/def/UNKNOWN.h (class definitions) ... generate: creating /export/tools/demeter/master/self-test/generated/notmod/def/UNKNOWN-DEM.C (non-inline functions) ... generate: creating main.C.sample ... generate: creating scanner/lex-syntax ... /export/tools/demeter/master/bin/gen-hash notmod/cds/cd-param-exp UNKNOWN dh > notmod/def/make_instance.info Demeter is in /export/tools/demeter/master make[1]: Leaving directory `/export/tools/demeter/master/self-test/generated' Creating scanner ... Running propagation pattern compiler ... if test x"" = x""; then /export/tools/demeter/master/bin/propagate UNKNOWN -i; else /export/tools/demeter/master/bin/propagate UNKNOWN -i -c ; fi propagate: reading notmod/cds/cd-param-exp ... propagate: searching propagation pattern files in ./ ... propagate: parsing ./1.pp propagate: ./inter-pps created. propagate: propagating *operation* Resource_List * required_res ( ) *init* (@ new Resource_List() @) propagate: ./inter-pps/1-1..pp created. propagate: generating C++ code .. propagate: calculating propagation graph ... propagate: printing propagation graph ... propagate: ./inter-pps/1-1.trv created. propagate: checking the Subclass Invariance Restriction ... propagate: evaluating transportation directives ... propagate: printing the propagation graph for transportation directive 1 ... propagate: ./inter-pps/1-1-1.trn created. propagate: checking the Subclass Invariance Restriction ... propagate: evaluating code fragments ... propagate: generating C++ code ... propagate: ./1-DEM.C created. Generating prototypes ... /export/tools/demeter/master/bin/headers Copyright (C) 1991, Northeastern University. All rights reserved. headers: checking time stamps ... headers: reading notmod/cds/cd-param-exp ... headers: reading ./main.C ... headers: reading ./1-DEM.C ... headers: please wait. Updating header files in notmod/headers/ ... headers: notmod/headers/Date.h created. headers: notmod/headers/DateOpen.h created. headers: notmod/headers/DateSelected.h created. headers: notmod/headers/Resource.h created. headers: notmod/headers/Resource_List.h created. headers: notmod/headers/Task.h created. headers: notmod/headers/TaskName.h created. headers: notmod/headers/TaskName_List.h created. headers: notmod/headers/Task_List.h created. headers: notmod/headers/Timing.h created. headers: notmod/headers/WorkFlowManagement.h created. Running preprocessor ... for _dir_ in . notmod/headers scanner notmod/def; do /export/tools/demeter/master/bin/comp-pp nosuffix notmod/cds/cd-param-exp UNKNOWN -p notmod/`/export/tools/demeter/master/bin/get-cpu` $_dir_/?*.[cCh]; done comp-pp: notmod/sun4/1-DEM.C created. comp-pp: notmod/sun4/global.h created. comp-pp: notmod/sun4/main.C created. comp-pp: notmod/sun4/user-calls.h created. comp-pp: notmod/sun4/Date.h created. comp-pp: notmod/sun4/DateOpen.h created. comp-pp: notmod/sun4/DateSelected.h created. comp-pp: notmod/sun4/Resource.h created. comp-pp: notmod/sun4/Resource_List.h created. comp-pp: notmod/sun4/Task.h created. comp-pp: notmod/sun4/TaskName.h created. comp-pp: notmod/sun4/TaskName_List.h created. comp-pp: notmod/sun4/Task_List.h created. comp-pp: notmod/sun4/Timing.h created. comp-pp: notmod/sun4/WorkFlowManagement.h created. comp-pp: notmod/sun4/lex.yy.c created. comp-pp: notmod/sun4/UNKNOWN-DEM.C created. comp-pp: notmod/sun4/UNKNOWN.h created. comp-pp: notmod/sun4/UNKNOWN_make_instance-DEM.C created. comp-pp: notmod/sun4/make_instance-DEM.C created. Demeter is in /export/tools/demeter/master make depend make[1]: Entering directory `/export/tools/demeter/master/self-test/generated' depending in ./notmod... make[2]: Entering directory `/export/tools/demeter/master/self-test/generated/notmod' depending in ./sun4... make[3]: Entering directory `/export/tools/demeter/master/self-test/generated/notmod/sun4' /export/tools/demeter/master/util/makedepend/makedepend -I/local/apps/objectcenter/clc++/sparc-sunos4/incl -- -I/export/tools/demeter/master/include -I/export/tools/demeter/master -DSI -- main.C make_instance-DEM.C lex.yy.c 1-DEM.C UNKNOWN-DEM.C UNKNOWN_make_instance-DEM.C make[3]: Leaving directory `/export/tools/demeter/master/self-test/generated/notmod/sun4' make[2]: Leaving directory `/export/tools/demeter/master/self-test/generated/notmod' make[1]: Leaving directory `/export/tools/demeter/master/self-test/generated' making all in ./notmod... make[1]: Entering directory `/export/tools/demeter/master/self-test/generated/notmod' making all in ./sun4... make[2]: Entering directory `/export/tools/demeter/master/self-test/generated/notmod/sun4' rm -f main.o CC -c -g -pipe -I/export/tools/demeter/master/include -I/export/tools/demeter/master -DSI main.C CC +g main.C: "main.C", line 21: warning: envp not used cc -c -g -pipe -I/export/tools/demeter/master/include -I/export/tools/demeter/master -DSI main.c rm -f make_instance-DEM.o CC -c -g -pipe -I/export/tools/demeter/master/include -I/export/tools/demeter/master -DSI make_instance-DEM.C CC +g make_instance-DEM.C: cc -c -g -pipe -I/export/tools/demeter/master/include -I/export/tools/demeter/master -DSI make_instance-DEM.c rm -f lex.yy.o cc -c -g -pipe -I/export/tools/demeter/master/include -I/export/tools/demeter/master -DSI lex.yy.c rm -f 1-DEM.o CC -c -g -pipe -I/export/tools/demeter/master/include -I/export/tools/demeter/master -DSI 1-DEM.C CC +g 1-DEM.C: "1-DEM.C", line 87: warning: return_val not used "1-DEM.C", line 87: warning: r not used cc -c -g -pipe -I/export/tools/demeter/master/include -I/export/tools/demeter/master -DSI 1-DEM.c rm -f UNKNOWN-DEM.o CC -c -g -pipe -I/export/tools/demeter/master/include -I/export/tools/demeter/master -DSI UNKNOWN-DEM.C CC +g UNKNOWN-DEM.C: "UNKNOWN-DEM.C", line 512: warning: strm not used cc -c -g -pipe -I/export/tools/demeter/master/include -I/export/tools/demeter/master -DSI UNKNOWN-DEM.c rm -f UNKNOWN_make_instance-DEM.o CC -c -g -pipe -I/export/tools/demeter/master/include -I/export/tools/demeter/master -DSI UNKNOWN_make_instance-DEM.C CC +g UNKNOWN_make_instance-DEM.C: cc -c -g -pipe -I/export/tools/demeter/master/include -I/export/tools/demeter/master -DSI UNKNOWN_make_instance-DEM.c rm -f run-exec if [ `basename CC` = gcc ]; then \ CC -I/export/tools/demeter/master/include -I/export/tools/demeter/master -o run-exec main.o make_instance-DEM.o lex.yy.o 1-DEM.o UNKNOWN-DEM.o UNKNOWN_make_instance-DEM.o -g -pipe /export/tools/demeter/master/lib-SI/sun4/libdemeterCC.a -ll -L/local/apps/X11R5/lib -lg++;\ else CC -I/export/tools/demeter/master/include -I/export/tools/demeter/master -o run-exec main.o make_instance-DEM.o lex.yy.o 1-DEM.o UNKNOWN-DEM.o UNKNOWN_make_instance-DEM.o -g -pipe /export/tools/demeter/master/lib-SI/sun4/libdemeterCC.a -ll -L/local/apps/X11R5/lib ;\ fi cc -L/amd/tigana/export/sun4-local/apps/objectcenter-2.0.0/clc++/sparc-sunos4 -o /export/tools/demeter/master/self-test/generated/notmod/sun4/run-exec -g -I/export/tools/demeter/master/include -I/export/tools/demeter/master main.o make_instance-DEM.o lex.yy.o 1-DEM.o UNKNOWN-DEM.o UNKNOWN_make_instance-DEM.o -pipe /export/tools/demeter/master/lib-SI/sun4/libdemeterCC.a -ll -L/local/apps/X11R5/lib -lC make[2]: Leaving directory `/export/tools/demeter/master/self-test/generated/notmod/sun4' make[1]: Leaving directory `/export/tools/demeter/master/self-test/generated/notmod' Parsing in object in: demeter-input. Drawing the parsed object: WorkFlowManagement HAS 1 PART( Task_List HAS 5 ELEMENTS{ Task HAS 5 PARTS( Timing HAS 3 PARTS( DateOpen HAS 0 PART() DateOpen HAS 0 PART() DateOpen HAS 0 PART()) TaskName HAS 1 PART( DemIdent A ) DemText (@ @) TaskName_List HAS 1 ELEMENT{ TaskName HAS 1 PART( DemIdent B )} Resource_List HAS 2 ELEMENTS{ Resource HAS 0 PART() Resource HAS 0 PART()}) Task HAS 5 PARTS( Timing HAS 3 PARTS( DateOpen HAS 0 PART() DateSelected HAS 3 PARTS( DemNumber 3 DemNumber 4 DemNumber 1993 ) DateOpen HAS 0 PART()) TaskName HAS 1 PART( DemIdent A ) DemText (@ @) TaskName_List HAS 1 ELEMENT{ TaskName HAS 1 PART( DemIdent B )} Resource_List HAS 2 ELEMENTS{ Resource HAS 0 PART() Resource HAS 0 PART()}) Task HAS 5 PARTS( Timing HAS 3 PARTS( DateOpen HAS 0 PART() DateSelected HAS 3 PARTS( DemNumber 3 DemNumber 4 DemNumber 1993 ) DateOpen HAS 0 PART()) TaskName HAS 1 PART( DemIdent A ) DemText (@ @) TaskName_List HAS 1 ELEMENT{ TaskName HAS 1 PART( DemIdent B )} Resource_List HAS 2 ELEMENTS{ Resource HAS 0 PART() Resource HAS 0 PART()}) Task HAS 5 PARTS( Timing HAS 3 PARTS( DateSelected HAS 3 PARTS( DemNumber 1 DemNumber 2 DemNumber 2000 ) DateOpen HAS 0 PART() DateOpen HAS 0 PART()) TaskName HAS 1 PART( DemIdent A ) DemText (@ @) TaskName_List HAS 1 ELEMENT{ TaskName HAS 1 PART( DemIdent B )} Resource_List HAS 2 ELEMENTS{ Resource HAS 0 PART() Resource HAS 0 PART()}) Task HAS 5 PARTS( Timing HAS 3 PARTS( DateOpen HAS 0 PART() DateOpen HAS 0 PART() DateSelected HAS 3 PARTS( DemNumber 4 DemNumber 5 DemNumber 1999 )) TaskName HAS 1 PART( DemIdent A ) DemText (@ @) TaskName_List HAS 1 ELEMENT{ TaskName HAS 1 PART( DemIdent B )} Resource_List HAS 2 ELEMENTS{ Resource HAS 0 PART() Resource HAS 0 PART()})}) End of drawing. Copying the object. Displaying the copied object as a tree: : WorkFlowManagement ( < tasks > : Task_List { : Task ( < timing > : Timing ( < dueDate > : DateOpen ( ) < startDate > : DateOpen ( ) < completionDate > : DateOpen ( ) ) < taskname > : TaskName ( < v > : DemIdent "A" ) < description > : DemText " " < prerequisites > : TaskName_List { : TaskName ( < v > : DemIdent "B" ) } < resources > : Resource_List { : Resource ( ) , : Resource ( ) } ) , : Task ( < timing > : Timing ( < dueDate > : DateOpen ( ) < startDate > : DateSelected ( < day > : DemNumber "3" < month > : DemNumber "4" < year > : DemNumber "1993" ) < completionDate > : DateOpen ( ) ) < taskname > : TaskName ( < v > : DemIdent "A" ) < description > : DemText " " < prerequisites > : TaskName_List { : TaskName ( < v > : DemIdent "B" ) } < resources > : Resource_List { : Resource ( ) , : Resource ( ) } ) , : Task ( < timing > : Timing ( < dueDate > : DateOpen ( ) < startDate > : DateSelected ( < day > : DemNumber "3" < month > : DemNumber "4" < year > : DemNumber "1993" ) < completionDate > : DateOpen ( ) ) < taskname > : TaskName ( < v > : DemIdent "A" ) < description > : DemText " " < prerequisites > : TaskName_List { : TaskName ( < v > : DemIdent "B" ) } < resources > : Resource_List { : Resource ( ) , : Resource ( ) } ) , : Task ( < timing > : Timing ( < dueDate > : DateSelected ( < day > : DemNumber "1" < month > : DemNumber "2" < year > : DemNumber "2000" ) < startDate > : DateOpen ( ) < completionDate > : DateOpen ( ) ) < taskname > : TaskName ( < v > : DemIdent "A" ) < description > : DemText " " < prerequisites > : TaskName_List { : TaskName ( < v > : DemIdent "B" ) } < resources > : Resource_List { : Resource ( ) , : Resource ( ) } ) , : Task ( < timing > : Timing ( < dueDate > : DateOpen ( ) < startDate > : DateOpen ( ) < completionDate > : DateSelected ( < day > : DemNumber "4" < month > : DemNumber "5" < year > : DemNumber "1999" ) ) < taskname > : TaskName ( < v > : DemIdent "A" ) < description > : DemText " " < prerequisites > : TaskName_List { : TaskName ( < v > : DemIdent "B" ) } < resources > : Resource_List { : Resource ( ) , : Resource ( ) } ) } ) End of display. Comparing the two objects: copied and original object are equal Pretty printing the parsed object: ( timing open open open name A (@ @)prerequisites ( B ) resources ( sun4 sun4 ) timing open 3 4 1993 open name A (@ @) prerequisites ( B ) resources ( sun4 sun4 ) timing open 3 4 1993 open name A (@ @)prerequisites ( B ) resources ( sun4 sun4 ) timing 1 2 2000 open open name A (@ @)prerequisites ( B ) resources ( sun4 sun4 ) timing open open 4 5 1999 name A (@ @) prerequisites ( B ) resources ( sun4 sun4 ) ) End of printing. Selftest of generic parser/printer: g_parse and g_parse( g_print( g_parse ) ) are equal. Selftest passed. >> Resource_List* WorkFlowManagement::required_res(), "1-DEM.C", line 7 >> void WorkFlowManagement::required_res_(Resource_List* & return_val), "1-DEM.C", line 16 >> void Task_List::required_res_(Resource_List* & return_val), "1-DEM.C", line 121 >> void Task::required_res_(Resource_List* & return_val), "1-DEM.C", line 44 >> void Timing::required_res_(Resource_List* & return_val,Resource_List* r), "1-DEM.C", line 67 >> void Date::required_res_(Resource_List* & return_val,Resource_List* r), "1-DEM.C", line 89 >> at DateOpen , *** PREMATURELY TERMINATED *** , "1-DEM.C", line 91 << at DateOpen , *** PREMATURELY TERMINATED *** , "1-DEM.C", line 91 << void Date::required_res_(Resource_List* & return_val,Resource_List* r), "1-DEM.C", line 89 << void Timing::required_res_(Resource_List* & return_val,Resource_List* r), "1-DEM.C", line 67 << void Task::required_res_(Resource_List* & return_val), "1-DEM.C", line 44 >> void Task::required_res_(Resource_List* & return_val), "1-DEM.C", line 44 >> void Timing::required_res_(Resource_List* & return_val,Resource_List* r), "1-DEM.C", line 67 >> void DateSelected::required_res_(Resource_List* & return_val,Resource_List* r), "1-DEM.C", line 101 << void DateSelected::required_res_(Resource_List* & return_val,Resource_List* r), "1-DEM.C", line 101 << void Timing::required_res_(Resource_List* & return_val,Resource_List* r), "1-DEM.C", line 67 << void Task::required_res_(Resource_List* & return_val), "1-DEM.C", line 44 >> void Task::required_res_(Resource_List* & return_val), "1-DEM.C", line 44 >> void Timing::required_res_(Resource_List* & return_val,Resource_List* r), "1-DEM.C", line 67 >> void DateSelected::required_res_(Resource_List* & return_val,Resource_List* r), "1-DEM.C", line 101 << void DateSelected::required_res_(Resource_List* & return_val,Resource_List* r), "1-DEM.C", line 101 << void Timing::required_res_(Resource_List* & return_val,Resource_List* r), "1-DEM.C", line 67 << void Task::required_res_(Resource_List* & return_val), "1-DEM.C", line 44 >> void Task::required_res_(Resource_List* & return_val), "1-DEM.C", line 44 >> void Timing::required_res_(Resource_List* & return_val,Resource_List* r), "1-DEM.C", line 67 >> void Date::required_res_(Resource_List* & return_val,Resource_List* r), "1-DEM.C", line 89 >> at DateOpen , *** PREMATURELY TERMINATED *** , "1-DEM.C", line 91 << at DateOpen , *** PREMATURELY TERMINATED *** , "1-DEM.C", line 91 << void Date::required_res_(Resource_List* & return_val,Resource_List* r), "1-DEM.C", line 89 << void Timing::required_res_(Resource_List* & return_val,Resource_List* r), "1-DEM.C", line 67 << void Task::required_res_(Resource_List* & return_val), "1-DEM.C", line 44 >> void Task::required_res_(Resource_List* & return_val), "1-DEM.C", line 44 >> void Timing::required_res_(Resource_List* & return_val,Resource_List* r), "1-DEM.C", line 67 >> void Date::required_res_(Resource_List* & return_val,Resource_List* r), "1-DEM.C", line 89 >> at DateOpen , *** PREMATURELY TERMINATED *** , "1-DEM.C", line 91 << at DateOpen , *** PREMATURELY TERMINATED *** , "1-DEM.C", line 91 << void Date::required_res_(Resource_List* & return_val,Resource_List* r), "1-DEM.C", line 89 << void Timing::required_res_(Resource_List* & return_val,Resource_List* r), "1-DEM.C", line 67 << void Task::required_res_(Resource_List* & return_val), "1-DEM.C", line 44 << void Task_List::required_res_(Resource_List* & return_val), "1-DEM.C", line 121 << void WorkFlowManagement::required_res_(Resource_List* & return_val), "1-DEM.C", line 16 << Resource_List* WorkFlowManagement::required_res(), "1-DEM.C", line 7 *** REQUIRED RESOURCES *** ( sun4 sun4 sun4 sun4 ) SUCCESS *** FINISHED *** Demeter utilities -- tree property checker: The sorted sets are: Date : [ DateOpen DateSelected ] The given collection of sets DOES have the tree property. Demeter utilities -- Inheritance reporter: The input class dictiorary contains only single inherited classes. WorkFlowManagement( List -|List (Task( | Timing( | Date( |-|Date |DateOpen() | | |DateSelected( | | DemNumber | |-|DemNumber DemNumber | |-| DemNumber)) | |-| Date |-| Date) |-| TaskName( | -|TaskName DemIdent) | | DemText | | List -| | (TaskName) | -| List -| (Resource())))) | List -| (S)( {S}) Classes defined for this Cd_graph: A Class named: WorkFlowManagement Which is a concrete class containing the following parts: A labeled part with label: tasks which is of class List With parameters: class Task End of class definition. A Class named: Task Which is a concrete class containing the following parts: The string: "timing" An unlabeled part which is of class Timing The string: "name" An unlabeled part which is of class TaskName A labeled part with label: description which is of class DemText The string: "prerequisites" A labeled part with label: prerequisites which is of class List With parameters: class TaskName The string: "resources" A labeled part with label: resources which is of class List With parameters: class Resource End of class definition. A Class named: TaskName Which is a concrete class containing the following parts: A labeled part with label: v which is of class DemIdent End of class definition. A Class named: Timing Which is a concrete class containing the following parts: A labeled part with label: dueDate which is of class Date A labeled part with label: startDate which is of class Date A labeled part with label: completionDate which is of class Date End of class definition. A Class named: Date Which is an abstract class that is a: class DateOpen or a class DateSelected Each of which has the following common parts: End of common parts. End of class definition. A Class named: DateSelected Which is a concrete class containing the following parts: A labeled part with label: day which is of class DemNumber A labeled part with label: month which is of class DemNumber A labeled part with label: year which is of class DemNumber End of class definition. A Class named: Resource Which is a concrete class containing the following parts: The string: "sun4" End of class definition. A Class named: DateOpen Which is a concrete class containing the following parts: The string: "open" End of class definition. A Class named: List Having the following parameters: S Which is a repetition class containing: The string: "(" Multiple occurances of the following: Instances of the class: class S The string: ")" End of class definition.