Name: Cristina Videira Lopes, g360-53 Project: cd-learn Directory: /projects/projects/crista/cd-learn-new This is a new version of cd-learn. The basic algorithm was not changed. The differences between old and new cd-learn are: *Exterior* - the sintax for input objects. *Interior* - bug fix. - pps organization. - enforcement of Law of Demeter. - elimination of C functions. - elimination of global variables. - documentation. Syntax for input objects: ------------------------ In the old version objects where described by [Name][:Object]. In this version these two parts were merged into only one; the ":" was also eliminated. Here is an example: Person( Ident "Lieberherr" Teacher( NU() OOS( Number "60" Book ( Ident "OOSE" Person( Ident "Jacobson" Eng()))))) Infinite loops can also be avoided. Here is another example: Child( Mother( Child)) Bug fix: ------- The old version had some bugs related to the "name" part of the input objects; this bug was automatically fixed with the new cd for object graphs. PPs organization: ---------------- PPs are divided into four files: cdlearn.pp, cdgraph.pp, objgraph.pp and rename.pp. This division matches the logical divisions in the class dictionary graph. The cdg is divided in: cd for cd-learn algorithm, cd for cd graphs, cd for object graphs and cd for renaming. Enforcement of Law of Demeter: ----------------------------- The complex redirections existing in the old code were substituted by new pps. Example: Ident* adjname =((Ident*)iAdj->get_objName()->get_objName()); Now is: Ident *adjname; iAdj->GetLabelIdent (adjname); Elimination of C functions: -------------------------- All (except one) existing C functions were eliminated. The returning value was substituted by an *out* parameter everywhere. Elimination of global variables: ------------------------------- In the new version there isn't any global variable; the resulting cdg is always passed as a parameter. Documentation: ------------- All pps have comments headers. **********************************xxxx******************************* The testing phase included the following growth plans: *GP 1* Simple objects, without repeated names in their part objects. *GP 2* Different parts for the same object => optional parts. *GP 3* Different part objects for the same label part => alternation. *GP 4* Lists of objects => Repetition classes. *GP 5* Extra cd file as input. *GP 6* Extra rename file as input. Inputs for the different growth phases can be found in directories U-1/inputs/gplan*.