Possible projects: sem-check 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 ... 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 keywords of Java or Demeter/Java ... Checking that the part names of every vertex are unique ... Checking the Inductiveness Axiom... new: Checking whether the Terminal-Buffer-Rule is followed. ------ multiple behavior files multiple cd files one java file per class incremental compilation edge wrappers generic functions g_print() g_displayAsTree() g_equal() g_copy() g_code() start with: /proj/adaptive/www/sources/DemeterJava/examples/j-gprint The question is: Which functions should be implemented like the parse function, which like the print function (using visitors) and which cannot be done by generating visitors? Can g_copy be done in the style of the PrintingVisitor?