Main { public static void main(String[] argv) (@ try { Definitions parser = new Definitions(System.in); TypeRegistry registry = parser._TypeRegistry(); registry.display(); } catch(ParseError e){ System.out.println(e.getMessage()); System.exit(1); } @) } TypeRegistry{ init (@ set_definedtype_list(new DefinedType_List(null)); @) public void display() to DefinedType { before DefinedType(@ host.display(); @) } public void add(DefinedType type) (@ get_definedtype_list().addElement(type); @) } DefinedType { init (@ name = null; header = null; @) public void display() (@ PrintWriter pw = new PrintWriter(System.out); universal_trv0(new DisplayVisitor(pw)); pw.flush(); System.out.println(); @) } EntityRegistry{ init (@ set_entity_list(new Entity_List(null)); @) public void display() to Entity { before Entity(@ host.display(); @) } public void add(Entity entity) (@ get_entity_list().addElement(entity); @) } AccessKeyList { init (@ set_accesskey_list(new AccessKey_List(null)); @) public void add(AccessKey key) (@ get_accesskey_list().addElement(key); @) } Entity { init (@ set_name(null); set_parents(new ParentEntity_List(null)); set_methods(new Method_List(null)); set_keys(new AccessKeyList()); @) public void display() (@ System.out.println("Entity.display - not implemented"); @) public void add(Method method) (@ get_methods().addElement(method); @) public void add(ParentEntity parent) (@ get_parents().addElement(parent); @) } Method { init (@ set_name(null); set_bodyVersion(null); set_isStatic(false); set_isConst(false); set_isVirtual(false); set_keys(new AccessKeyList()); set_returnDecl(null); set_args(new ArgumentDecl_List(null)); @) public void add(ArgumentDecl decl) (@ get_args().addElement(decl); @) } TypeDecl { init (@ set_prefix(""); set_suffix(""); set_isRef(false); set_type(null); set_auxType(new TypeUse_List(null)); @) public void append_prefix(String text) (@ set_prefix(get_prefix()+text); @) public void append_suffix(String text) (@ set_suffix(get_suffix()+text); @) public void add_auxType(TypeUse use) (@ get_auxType().addElement(use); @) } ArgumentDecl { init (@ set_name(null); set_initializer(null); @) }