Hi: Thank you for exploring Demeter. Most of the Demeter/C++ expertise has graduated. Nevertheless, I forward your question to the Demeter/Java team. You are encouraged to try the Demeter/Java version. -- Karl Lieberherr PS. We distribute the full source code for Demeter/C++. The directory http://www.ccs.neu.edu/research/demeter/tools/master contains the source code for the Demeter/C++ Tools. ftp://ftp.ccs.neu.edu/pub/people/lieber/sources/demeter-master.tar.gz contains a compressed tar file of the same information. The directory is huge and contains some outdated information but is published here for the benefit of those who have to maintain Demeter/C++ applications and port them to new platforms. The source code might also be useful to researchers. We focus our efforts now on Demeter/Java: see http://www.ccs.neu.edu/home/lieber/Demeter-and-Java.html for information and free source code. Enjoy. -- Karl Lieberherr ================================ For both Demeter/C++ and Demeter/Java: Copyright (C) Northeastern University The copyright information is in: http://www.ccs.neu.edu/research/demeter/sources/DemeterJava/NUDCopyright.html From jefu@knowledge2000.com Wed Jul 16 11:41:52 1997 Date: Wed, 16 Jul 1997 08:43:26 -0700 From: Jefu! To: demeter@ccs.neu.edu I'm interested in exploring demeter and got both the java and c++ versions. I'm currently trying the C++ version and tried to run the self-test and got the following output file. "uname -a" returns : Linux k2 2.0.27 #8 Tue Mar 25 15:14:27 MST 1997 i686 g++ --version gives : 2.7.2.1 flex seems to be called with the -l option. Demeter is in /mnt/k2/home/jefu/demeter/demeter + rm -f Makefile.bak + mv Makefile Makefile.bak /mnt/k2/home/jefu/demeter/demeter/config/imake/imake -I/mnt/k2/home/jefu/demeter/demeter/config/cf -DTOPDIR=/mnt/k2/home/jefu/demeter/demeter -DCURDIR=. Running semantic checker ... /mnt/k2/home/jefu/demeter/demeter/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 `/mnt/k2/home/jefu/demeter/demeter/self-test/generated' Running C++ code generator ... /mnt/k2/home/jefu/demeter/demeter/bin/generate SI UNKNOWN "" generate: creating intermediate notation in notmod/cds/cd-inter ... generate: creating /mnt/k2/home/jefu/demeter/demeter/self-test/generated/notmod/def/UNKNOWN.h (class definitions) ... generate: creating /mnt/k2/home/jefu/demeter/demeter/self-test/generated/notmod/def/UNKNOWN-DEM.C (non-inline functions) ... generate: creating main.C.sample ... generate: creating scanner/lex-syntax ... /mnt/k2/home/jefu/demeter/demeter/bin/gen-hash notmod/cds/cd-param-exp UNKNOWN dh > notmod/def/make_instance.info Demeter is in /mnt/k2/home/jefu/demeter/demeter make[1]: Leaving directory `/mnt/k2/home/jefu/demeter/demeter/self-test/generated' cat: scanner/lex-DEM.l: No such file or directory ho: Command not found. Creating scanner ... Running propagation pattern compiler ... if test x"" = x""; then /mnt/k2/home/jefu/demeter/demeter/bin/propagate UNKNOWN -i; else /mnt/k2/home/jefu/demeter/demeter/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 traversal graph ... propagate: printing traversal graph ... propagate: ./inter-pps/1-1.trv created. propagate: evaluating transportation directives ... propagate: evaluating *carry* *in*Resource_List *r =(@ resources @) .... propagate: printing the propagation graph for transportation directive 1 ... propagate: ./inter-pps/1-1-1.trn created. propagate: evaluating code fragments ... propagate: generating C++ code ... propagate: ./1-DEM.C created. Generating prototypes ... /mnt/k2/home/jefu/demeter/demeter/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 /mnt/k2/home/jefu/demeter/demeter/bin/comp-pp nosuffix notmod/cds/cd-param-exp UNKNOWN -p notmod/`/mnt/k2/home/jefu/demeter/demeter/bin/get-cpu` $_dir_/?*.[cCh]; done comp-pp: notmod/i486-linux/1-DEM.C created. comp-pp: notmod/i486-linux/global.h created. comp-pp: notmod/i486-linux/main.C created. comp-pp: notmod/i486-linux/user-calls.h created. comp-pp: notmod/i486-linux/Date.h created. comp-pp: notmod/i486-linux/DateOpen.h created. comp-pp: notmod/i486-linux/DateSelected.h created. comp-pp: notmod/i486-linux/Resource.h created. comp-pp: notmod/i486-linux/Resource_List.h created. comp-pp: notmod/i486-linux/Task.h created. comp-pp: notmod/i486-linux/TaskName.h created. comp-pp: notmod/i486-linux/TaskName_List.h created. comp-pp: notmod/i486-linux/Task_List.h created. comp-pp: notmod/i486-linux/Timing.h created. comp-pp: notmod/i486-linux/WorkFlowManagement.h created. comp-pp: notmod/i486-linux/lex.yy.c created. comp-pp: notmod/i486-linux/UNKNOWN-DEM.C created. comp-pp: notmod/i486-linux/UNKNOWN.h created. comp-pp: notmod/i486-linux/UNKNOWN_make_instance-DEM.C created. comp-pp: notmod/i486-linux/make_instance-DEM.C created. Demeter is in /mnt/k2/home/jefu/demeter/demeter make depend make[1]: Entering directory `/mnt/k2/home/jefu/demeter/demeter/self-test/generated' depending in ./notmod... make[2]: Entering directory `/mnt/k2/home/jefu/demeter/demeter/self-test/generated/notmod' depending in ./i486-linux... make[3]: Entering directory `/mnt/k2/home/jefu/demeter/demeter/self-test/generated/notmod/i486-linux' /mnt/k2/home/jefu/demeter/demeter/config/makedepend/makedepend -- -I/mnt/k2/home/jefu/demeter/demeter/include -I/mnt/k2/home/jefu/demeter/demeter -Dlinux -D__i386__ -D_POSIX_SOURCE -D_BSD_SOURCE -D_GNU_SOURCE -DX_LOCALE -DFUNCPROTO=15 -DNARROWPROTO -DSI -- main.C make_instance-DEM.C lex.yy.c 1-DEM.C UNKNOWN-DEM.C UNKNOWN_make_instance-DEM.C /mnt/k2/home/jefu/demeter/demeter/config/makedepend/makedepend: warning: main.C (reading /mnt/k2/home/jefu/demeter/demeter/include/demeter.h): cannot find include file "stream.h" not in /mnt/k2/home/jefu/demeter/demeter/include/stream.h not in /mnt/k2/home/jefu/demeter/demeter/include/stream.h not in /mnt/k2/home/jefu/demeter/demeter/stream.h not in /usr/local/lib/gcc-include/stream.h not in /usr/include/stream.h /mnt/k2/home/jefu/demeter/demeter/config/makedepend/makedepend: warning: main.C (reading /mnt/k2/home/jefu/demeter/demeter/include/demeter.h): cannot find include file "iostream.h" not in /mnt/k2/home/jefu/demeter/demeter/include/iostream.h not in /mnt/k2/home/jefu/demeter/demeter/include/iostream.h not in /mnt/k2/home/jefu/demeter/demeter/iostream.h not in /usr/local/lib/gcc-include/iostream.h not in /usr/include/iostream.h /mnt/k2/home/jefu/demeter/demeter/config/makedepend/makedepend: warning: main.C (reading /mnt/k2/home/jefu/demeter/demeter/include/demeter.h): cannot find include file "fstream.h" not in /mnt/k2/home/jefu/demeter/demeter/include/fstream.h not in /mnt/k2/home/jefu/demeter/demeter/include/fstream.h not in /mnt/k2/home/jefu/demeter/demeter/fstream.h not in /usr/local/lib/gcc-include/fstream.h not in /usr/include/fstream.h /mnt/k2/home/jefu/demeter/demeter/config/makedepend/makedepend: warning: main.C (reading /usr/include/string.h): cannot find include file "stddef.h" not in /usr/include/stddef.h not in /mnt/k2/home/jefu/demeter/demeter/include/stddef.h not in /mnt/k2/home/jefu/demeter/demeter/stddef.h not in /usr/local/lib/gcc-include/stddef.h not in /usr/include/stddef.h /mnt/k2/home/jefu/demeter/demeter/config/makedepend/makedepend: warning: main.C (reading /mnt/k2/home/jefu/demeter/demeter/include/rep-macro.h): cannot find include file "generic.h" not in /mnt/k2/home/jefu/demeter/demeter/include/generic.h not in /mnt/k2/home/jefu/demeter/demeter/include/generic.h not in /mnt/k2/home/jefu/demeter/demeter/generic.h not in /usr/local/lib/gcc-include/generic.h not in /usr/include/generic.h /mnt/k2/home/jefu/demeter/demeter/config/makedepend/makedepend: warning: main.C (reading UNKNOWN.h): cannot find include file "iostream.h" not in iostream.h not in /mnt/k2/home/jefu/demeter/demeter/include/iostream.h not in /mnt/k2/home/jefu/demeter/demeter/iostream.h not in /usr/local/lib/gcc-include/iostream.h not in /usr/include/iostream.h /mnt/k2/home/jefu/demeter/demeter/config/makedepend/makedepend: warning: main.C (reading UNKNOWN.h): cannot find include file "new.h" not in new.h not in /mnt/k2/home/jefu/demeter/demeter/include/new.h not in /mnt/k2/home/jefu/demeter/demeter/new.h not in /usr/local/lib/gcc-include/new.h not in /usr/include/new.h /mnt/k2/home/jefu/demeter/demeter/config/makedepend/makedepend: warning: make_instance-DEM.C: cannot find include file "iostream.h" not in iostream.h not in /mnt/k2/home/jefu/demeter/demeter/include/iostream.h not in /mnt/k2/home/jefu/demeter/demeter/iostream.h not in /usr/local/lib/gcc-include/iostream.h not in /usr/include/iostream.h /mnt/k2/home/jefu/demeter/demeter/config/makedepend/makedepend: warning: UNKNOWN_make_instance-DEM.C: cannot find include file "iostream.h" not in iostream.h not in /mnt/k2/home/jefu/demeter/demeter/include/iostream.h not in /mnt/k2/home/jefu/demeter/demeter/iostream.h not in /usr/local/lib/gcc-include/iostream.h not in /usr/include/iostream.h make[3]: Leaving directory `/mnt/k2/home/jefu/demeter/demeter/self-test/generated/notmod/i486-linux' make[2]: Leaving directory `/mnt/k2/home/jefu/demeter/demeter/self-test/generated/notmod' make[1]: Leaving directory `/mnt/k2/home/jefu/demeter/demeter/self-test/generated' making all in ./notmod... make[1]: Entering directory `/mnt/k2/home/jefu/demeter/demeter/self-test/generated/notmod' making all in ./i486-linux... make[2]: Entering directory `/mnt/k2/home/jefu/demeter/demeter/self-test/generated/notmod/i486-linux' rm -f main.o gcc -c -g -ansi -pedantic -I/mnt/k2/home/jefu/demeter/demeter/include -I/mnt/k2/home/jefu/demeter/demeter -Dlinux -D__i386__ -D_POSIX_SOURCE -D_BSD_SOURCE -D_GNU_SOURCE -DX_LOCALE -DFUNCPROTO=15 -DNARROWPROTO -DSI main.C rm -f make_instance-DEM.o gcc -c -g -ansi -pedantic -I/mnt/k2/home/jefu/demeter/demeter/include -I/mnt/k2/home/jefu/demeter/demeter -Dlinux -D__i386__ -D_POSIX_SOURCE -D_BSD_SOURCE -D_GNU_SOURCE -DX_LOCALE -DFUNCPROTO=15 -DNARROWPROTO -DSI make_instance-DEM.C rm -f lex.yy.o gcc -c -g -ansi -pedantic -I/mnt/k2/home/jefu/demeter/demeter/include -I/mnt/k2/home/jefu/demeter/demeter -Dlinux -D__i386__ -D_POSIX_SOURCE -D_BSD_SOURCE -D_GNU_SOURCE -DX_LOCALE -DFUNCPROTO=15 -DNARROWPROTO -DSI lex.yy.c scanner/lex-DEM.l: In function `yylex': scanner/lex-DEM.l:39: `yylineno' undeclared (first use this function) scanner/lex-DEM.l:39: (Each undeclared identifier is reported only once scanner/lex-DEM.l:39: for each function it appears in.) make[2]: *** [lex.yy.o] Error 1 make[2]: Leaving directory `/mnt/k2/home/jefu/demeter/demeter/self-test/generated/notmod/i486-linux' make[1]: *** [all] Error 2 make[1]: Leaving directory `/mnt/k2/home/jefu/demeter/demeter/self-test/generated/notmod' make: *** [all] Error 2 ./notmod/i486-linux/run-exec: Command not found. 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.