#include "UNKNOWN.h"


 
// String variables used to build the new names for expanded classes
   static char expname1[100]; 
   static char expname2[100];
 


int Cd_graph::expand_params( char*  filename )
{
  DEM_TRACE("Cd_graph","int Cd_graph::expand_params(char*  filename)");
  int return_val =  1 ;

  this->expand_params_( return_val, filename  );
  return return_val;
}
void Cd_graph::expand_params_( int& return_val, char*  filename )
{
  DEM_TRACE("Cd_graph","void Cd_graph::expand_params_(int& return_val,char*  filename)");
  // prefix class wrappers
 
       cout << endl << "Expanding parameterization ..." << endl;
       if (filename != NULL) {
         filebuf in_file;
         if (in_file.open(filename, input) != 0)
           cout << "sem-check: " << filename << " recreated." << endl;
         else
	     in_file.close();
         ofstream OutFile(filename);
         if (!OutFile) {
           cout << "sem-check: error: cannot open file " << filename << endl;
           return_val = 0;
         }
         else {
           OutFile << "// Parameterization-expanded class dictionary."
                   << endl << endl;
         }
       
         this->expand_params1();

         Adjacency_Nlist* adjnl = this->get_adjacencies();
         this->set_adjacencies(new Adjacency_Nlist);
         adjnl->expand_params8(this);
       
         this->g_print(OutFile);
           
         OutFile.close();
       }
       else {
         this->expand_params1();

         Adjacency_Nlist* adjnl = this->get_adjacencies();
         this->set_adjacencies(new Adjacency_Nlist);
         adjnl->expand_params8(this);
       }
     

  // suffix class wrappers

}

//  Cd_graph  = <adjacencies > Adjacency_Nlist 
//            [ <terminal_sets > Vertex_Comma_list  ] .
void Cd_graph::expand_params1(  )
{
  DEM_TRACE("Cd_graph","void Cd_graph::expand_params1()");
  // variables for carrying in and out
  Cd_graph*  graph =  this ;

  // assignments for carrying in

  // prefix class wrappers
 
               if (this->get_terminal_sets() == NULL) {
                  Vertex_Comma_list* vcl = new Vertex_Comma_list;
                  Vertex* v1 = new Vertex;
                  Vertex* v2 = new Vertex;
                  Vertex* v3 = new Vertex;
                  Vertex* v4 = new Vertex;
                  Vertex* v5 = new Vertex;
                  v1->set_vertex_name(new DemIdent("DemText"));
                  vcl->append(v1);
                  v2->set_vertex_name(new DemIdent("DemReal"));
                  vcl->append(v2);
                  v3->set_vertex_name(new DemIdent("DemString"));
                  vcl->append(v3);
                  v4->set_vertex_name(new DemIdent("DemIdent"));
                  vcl->append(v4);
                  v5->set_vertex_name(new DemIdent("DemNumber"));
                  vcl->append(v5);
                  this->set_terminal_sets(vcl);
                }
              

  // outgoing calls
  // construction edge prefix wrappers
  this->get_adjacencies()->expand_params1( graph  );
  // construction edge suffix wrappers

  // suffix class wrappers

  // assignments for carrying out
}

//  Adjacency  = <source > Vertex 
//             [ <parameters > Vertex_Comma_list  ] 
//            <ns > Neighbors 
//            "." 
//            *l.
void Adjacency::expand_params1( Cd_graph*  graph )
{
  DEM_TRACE("Adjacency","void Adjacency::expand_params1(Cd_graph*  graph)");
  // variables for carrying in and out

  // assignments for carrying in

  // prefix class wrappers
 // Skip parameterized classes
                if (this->get_parameters() != NULL)  return;
              

  // outgoing calls
  // construction edge prefix wrappers
  this->get_ns()->expand_params1( graph  );
  // construction edge suffix wrappers

  // suffix class wrappers

  // assignments for carrying out
}

//  Neighbors  : Neighbors_wc   |
//            Repetit_n 
//           *common* .
void Neighbors::expand_params1( Cd_graph*  graph )
{
  DEM_TRACE("Neighbors","void Neighbors::expand_params1(Cd_graph*  graph)");
#ifndef NOTRACE
   DemTrace demTraceEmptyMethod(__FILE__,__LINE__,"Neighbors",form(" at %s , ***  PREMATURELY TERMINATED *** ", this->get_type()));
#endif

}

//  Neighbors_wc  : Construct_ns   |
//               Alternat_ns 
//           *common* +
//                    <construct_ns > Any_vertex_List 
//                    -.
void Neighbors_wc::expand_params1( Cd_graph*  graph,Any_vertex_List* &  vlist,Opt_labeled_term_Sandwich* &  olts )
{
  DEM_TRACE("Neighbors_wc","void Neighbors_wc::expand_params1(Cd_graph*  graph,Any_vertex_List* &  vlist,Opt_labeled_term_Sandwich* &  olts)");
#ifndef NOTRACE
   DemTrace demTraceEmptyMethod(__FILE__,__LINE__,"Neighbors_wc",form(" at %s , ***  PREMATURELY TERMINATED *** ", this->get_type()));
#endif

}

void Construct_ns::expand_params1( Cd_graph*  graph )
{
  DEM_TRACE("Construct_ns","void Construct_ns::expand_params1(Cd_graph*  graph)");
  // variable definitions for carrying in and out
  Any_vertex_List*  vlist ;
  Opt_labeled_term_Sandwich*  olts ;

    this->expand_params1( graph ,  vlist ,  olts  );

}

//  Construct_ns  = "=" .
void Construct_ns::expand_params1( Cd_graph*  graph,Any_vertex_List* &  vlist,Opt_labeled_term_Sandwich* &  olts )
{
  DEM_TRACE("Construct_ns","void Construct_ns::expand_params1(Cd_graph*  graph,Any_vertex_List* &  vlist,Opt_labeled_term_Sandwich* &  olts)");
  // variables for carrying in and out

  // assignments for carrying in



  // prefix class wrappers
 vlist = NULL;
                olts  = NULL; 
              
  vlist = new Any_vertex_List;
              

  // outgoing calls
  // inheritance edge prefix wrappers
  // construction edge prefix wrappers
  this->get_construct_ns()->expand_params1( graph ,  vlist ,  olts  );
  // construction edge suffix wrappers
  // inheritance edge prefix wrappers

  // suffix class wrappers
 delete this->get_construct_ns();
                this->set_construct_ns(vlist);
              

  // assignments for carrying out


}

void Alternat_ns::expand_params1( Cd_graph*  graph )
{
  DEM_TRACE("Alternat_ns","void Alternat_ns::expand_params1(Cd_graph*  graph)");
  // variable definitions for carrying in and out
  Any_vertex_List*  vlist ;
  Opt_labeled_term_Sandwich*  olts ;

    this->expand_params1( graph ,  vlist ,  olts  );

}

//  Alternat_ns  = ":" 
//              +
//              <alternat_ns > Term_Bar_list 
//              -
//               [ <common > Common  ] .
void Alternat_ns::expand_params1( Cd_graph*  graph,Any_vertex_List* &  vlist,Opt_labeled_term_Sandwich* &  olts )
{
  DEM_TRACE("Alternat_ns","void Alternat_ns::expand_params1(Cd_graph*  graph,Any_vertex_List* &  vlist,Opt_labeled_term_Sandwich* &  olts)");
  // variables for carrying in and out

  // assignments for carrying in



  // prefix class wrappers
 vlist = NULL;
                olts  = NULL; 
              
  vlist = new Any_vertex_List;
              
 if (this->get_common() == NULL) {
                  this->set_common(new Common);
                }
              

  // outgoing calls
  // construction edge prefix wrappers
  this->get_alternat_ns()->expand_params1( graph  );
  // construction edge suffix wrappers
  // inheritance edge prefix wrappers
  // construction edge prefix wrappers
  this->get_construct_ns()->expand_params1( graph ,  vlist ,  olts  );
  // construction edge suffix wrappers
  // inheritance edge prefix wrappers

  // suffix class wrappers
 delete this->get_construct_ns();
                this->set_construct_ns(vlist);
              

  // assignments for carrying out


}

void Repetit_n::expand_params1( Cd_graph*  graph )
{
  DEM_TRACE("Repetit_n","void Repetit_n::expand_params1(Cd_graph*  graph)");
  // variable definitions for carrying in and out
  Any_vertex_List*  vlist ;
  Opt_labeled_term_Sandwich*  olts ;

    this->expand_params1( graph ,  vlist ,  olts  );

}

//  Repetit_n  = "~" 
//            <sandwiched > Kernel_Sandwich .
void Repetit_n::expand_params1( Cd_graph*  graph,Any_vertex_List* &  vlist,Opt_labeled_term_Sandwich* &  olts )
{
  DEM_TRACE("Repetit_n","void Repetit_n::expand_params1(Cd_graph*  graph,Any_vertex_List* &  vlist,Opt_labeled_term_Sandwich* &  olts)");
  // variables for carrying in and out

  // assignments for carrying in


  // prefix class wrappers
 vlist = NULL;
                olts  = NULL; 
              

  // outgoing calls
  // construction edge prefix wrappers
  this->get_sandwiched()->expand_params1( graph ,  vlist ,  olts  );
  // construction edge suffix wrappers

  // suffix class wrappers

  // assignments for carrying out

}

//  Kernel  =  [ <nonempty > Term  ] 
//         "{" 
//         <repeated > Term_Sandwich 
//         "}" .
void Kernel::expand_params1( Cd_graph*  graph,Any_vertex_List* &  vlist,Opt_labeled_term_Sandwich* &  olts )
{
  DEM_TRACE("Kernel","void Kernel::expand_params1(Cd_graph*  graph,Any_vertex_List* &  vlist,Opt_labeled_term_Sandwich* &  olts)");
  // variables for carrying in and out

  // assignments for carrying in

  // prefix class wrappers

  // outgoing calls
  if ( this->get_nonempty() != NULL )
  {
  // construction edge prefix wrappers
    this->get_nonempty()->expand_params1( graph  );
  // construction edge prefix wrappers
  }
  // construction edge prefix wrappers
  this->get_repeated()->expand_params1( graph ,  vlist ,  olts  );
  // construction edge suffix wrappers

  // suffix class wrappers

  // assignments for carrying out
}

//  Any_vertex  : Opt_labeled_term   |
//             Optional_term   |
//             Syntax_vertex   |
//             Inherit_term 
//           *common* .
void Any_vertex::expand_params1( Cd_graph*  graph,Any_vertex_List* &  vlist,Opt_labeled_term_Sandwich* &  olts )
{
  DEM_TRACE("Any_vertex","void Any_vertex::expand_params1(Cd_graph*  graph,Any_vertex_List* &  vlist,Opt_labeled_term_Sandwich* &  olts)");
#ifndef NOTRACE
   DemTrace demTraceEmptyMethod(__FILE__,__LINE__,"Any_vertex",form(" at %s , ***  PREMATURELY TERMINATED *** ", this->get_type()));
#endif

}

//  Syntax_vertex  : Regular_syntax   |
//                Print_command 
//           *common* .
void Syntax_vertex::expand_params1( Cd_graph*  graph,Any_vertex_List* &  vlist,Opt_labeled_term_Sandwich* &  olts )
{
  DEM_TRACE("Syntax_vertex","void Syntax_vertex::expand_params1(Cd_graph*  graph,Any_vertex_List* &  vlist,Opt_labeled_term_Sandwich* &  olts)");
  // variables for carrying in and out

  // assignments for carrying in


  // prefix class wrappers
 if ((olts == NULL) && (vlist != NULL)) {
                  vlist->append(this); 
                }
              


  // suffix class wrappers

  // assignments for carrying out

}

//  Opt_labeled_term  : Labeled   |
//                   Regular 
//           *common*  [ <staticspec > StaticSpec  ] 
//                     [ <accessorspec > AccessorSpec  ] 
//                    <vertex > Term .
void Opt_labeled_term::expand_params1( Cd_graph*  graph,Any_vertex_List* &  vlist,Opt_labeled_term_Sandwich* &  olts )
{
  DEM_TRACE("Opt_labeled_term","void Opt_labeled_term::expand_params1(Cd_graph*  graph,Any_vertex_List* &  vlist,Opt_labeled_term_Sandwich* &  olts)");
#ifndef NOTRACE
   DemTrace demTraceEmptyMethod(__FILE__,__LINE__,"Opt_labeled_term",form(" at %s , ***  PREMATURELY TERMINATED *** ", this->get_type()));
#endif

}

//  Regular  = .
void Regular::expand_params1( Cd_graph*  graph,Any_vertex_List* &  vlist,Opt_labeled_term_Sandwich* &  olts )
{
  DEM_TRACE("Regular","void Regular::expand_params1(Cd_graph*  graph,Any_vertex_List* &  vlist,Opt_labeled_term_Sandwich* &  olts)");
  // variables for carrying in and out

  // assignments for carrying in



  // prefix class wrappers
 
                char* newlabel = this->get_vertex()->expand_params3();
                char* ptr1 = newlabel;
                char* ptr2 = expname2;
                
                while (*ptr1) {
                  if ((*ptr1 >= 'A') && (*ptr1 <= 'Z'))
                    *ptr2 = *ptr1 + ('a' - 'A');
                  else
                    *ptr2 = *ptr1;
                  ptr1++;
                  ptr2++;
                }
                *ptr2 = '\0';
                
                
                DemIdent* lname = new DemIdent(expname2);
                lname->set_line_number(this->get_vertex()->find_line_number());
                Labeled* label = new Labeled;
                label->set_staticspec(this->get_staticspec());
                label->set_accessorspec(this->get_accessorspec());
                label->set_vertex(this->get_vertex());
                label->set_label_name(lname);
                
                if (olts == NULL) {
                  if (vlist != NULL) {
                    vlist->append(label);
                   }
                }
                else {
                  olts->set_inner(label);
                }
              

  // outgoing calls
  // inheritance edge prefix wrappers
  // construction edge prefix wrappers
  this->get_vertex()->expand_params1( graph  );
  // construction edge suffix wrappers
  // inheritance edge prefix wrappers

  // suffix class wrappers

  // assignments for carrying out


}

//  Labeled  = "<" 
//          <label_name > DemIdent 
//          ">" .
void Labeled::expand_params1( Cd_graph*  graph,Any_vertex_List* &  vlist,Opt_labeled_term_Sandwich* &  olts )
{
  DEM_TRACE("Labeled","void Labeled::expand_params1(Cd_graph*  graph,Any_vertex_List* &  vlist,Opt_labeled_term_Sandwich* &  olts)");
  // variables for carrying in and out

  // assignments for carrying in



  // prefix class wrappers
 if ((olts == NULL) && (vlist != NULL)) {
                  vlist->append(this); 
                }
              

  // outgoing calls
  // inheritance edge prefix wrappers
  // construction edge prefix wrappers
  this->get_vertex()->expand_params1( graph  );
  // construction edge suffix wrappers
  // inheritance edge prefix wrappers

  // suffix class wrappers

  // assignments for carrying out


}

//  Inherit_term  = "*inherit*" 
//               <inherited > Term_Comma_list .
void Inherit_term::expand_params1( Cd_graph*  graph,Any_vertex_List* &  vlist,Opt_labeled_term_Sandwich* &  olts )
{
  DEM_TRACE("Inherit_term","void Inherit_term::expand_params1(Cd_graph*  graph,Any_vertex_List* &  vlist,Opt_labeled_term_Sandwich* &  olts)");
  // variables for carrying in and out

  // assignments for carrying in


  // prefix class wrappers
 if ((olts == NULL) && (vlist != NULL)) {
                  vlist->append(this); 
                }
              

  // outgoing calls
  // construction edge prefix wrappers
  this->get_inherited()->expand_params1( graph  );
  // construction edge suffix wrappers

  // suffix class wrappers

  // assignments for carrying out

}

//  Term  : Normal   |
//       CppTerm 
//           *common* <vertex > Vertex 
//                    <moduleRef > TermRef 
//                     [ <actual_parameters > Term_Comma_list  ] .
void Term::expand_params1( Cd_graph*  graph )
{
  DEM_TRACE("Term","void Term::expand_params1(Cd_graph*  graph)");
  // variables for carrying in and out

  // assignments for carrying in

  // prefix class wrappers
   
    
                  char* name = this->expand_params3();

                  if (this->get_actual_parameters()) {

                    // If this is a parameterized class, check to see whether
                    // the expanded version exists. If not, copy the
                    // class, append it to the CD and expand the parameters.
                    
                    Vertex* newvertex = new Vertex();

                    DemIdent* vname = new DemIdent(name);
                    
                    newvertex->set_vertex_name(vname);
                    
                    if (graph->find_adjacency(newvertex) == NULL) {

                      Adjacency* newadj = 
                            (Adjacency*) graph->find_adjacency(this->get_vertex())
                                              ->g_copy();
                  
                      newadj->expand_params6(this, (Vertex*)newvertex->g_copy());
                      
                      graph->get_adjacencies()->append(newadj);
                    }
                    this->get_actual_parameters()->g_delete();
                    this->set_actual_parameters(NULL);
                    this->get_vertex()->g_delete();
                    this->set_vertex(newvertex);
                  }
              


  // suffix class wrappers

  // assignments for carrying out
}

//  Optional_term  = "[" 
//                <opt > Opt_labeled_term_Sandwich 
//                "]" .
void Optional_term::expand_params1( Cd_graph*  graph,Any_vertex_List* &  vlist,Opt_labeled_term_Sandwich* &  olts )
{
  DEM_TRACE("Optional_term","void Optional_term::expand_params1(Cd_graph*  graph,Any_vertex_List* &  vlist,Opt_labeled_term_Sandwich* &  olts)");
  // variables for carrying in and out

  // assignments for carrying in


  // prefix class wrappers
 if ((olts == NULL) && (vlist != NULL)) {
                  vlist->append(this); 
                }
              

  // outgoing calls
  // construction edge prefix wrappers
  this->get_opt()->expand_params1( graph ,  vlist ,  olts  );
  // construction edge suffix wrappers

  // suffix class wrappers

  // assignments for carrying out

}

//  Adjacency_Nlist  ~ Adjacency  { Adjacency  }. .
void Adjacency_Nlist::expand_params1( Cd_graph*  graph )
{
  DEM_TRACE("Adjacency_Nlist","void Adjacency_Nlist::expand_params1(Cd_graph*  graph)");
  // variables for carrying in and out

  // assignments for carrying in

  // prefix class wrappers

  // outgoing calls
  Adjacency_list_iterator	next_Adjacency(*this);
  Adjacency*		each_Adjacency;

  while ( each_Adjacency = next_Adjacency() )
  {
  // repetition edge prefix wrappers
    each_Adjacency->expand_params1( graph  );
  // repetition edge suffix wrappers
  }

  // suffix class wrappers

  // assignments for carrying out
}

//  Any_vertex_List  ~  { Any_vertex  }. .
void Any_vertex_List::expand_params1( Cd_graph*  graph,Any_vertex_List* &  vlist,Opt_labeled_term_Sandwich* &  olts )
{
  DEM_TRACE("Any_vertex_List","void Any_vertex_List::expand_params1(Cd_graph*  graph,Any_vertex_List* &  vlist,Opt_labeled_term_Sandwich* &  olts)");
  // variables for carrying in and out

  // assignments for carrying in

  // prefix class wrappers

  // outgoing calls
  Any_vertex_list_iterator	next_Any_vertex(*this);
  Any_vertex*		each_Any_vertex;

  while ( each_Any_vertex = next_Any_vertex() )
  {
  // repetition edge prefix wrappers
    each_Any_vertex->expand_params1( graph ,  vlist ,  olts  );
  // repetition edge suffix wrappers
  }

  // suffix class wrappers

  // assignments for carrying out
}

//  Term_Bar_list  ~ Term  { Term  }. .
void Term_Bar_list::expand_params1( Cd_graph*  graph )
{
  DEM_TRACE("Term_Bar_list","void Term_Bar_list::expand_params1(Cd_graph*  graph)");
  // variables for carrying in and out

  // assignments for carrying in

  // prefix class wrappers

  // outgoing calls
  Term_list_iterator	next_Term(*this);
  Term*		each_Term;

  while ( each_Term = next_Term() )
  {
  // repetition edge prefix wrappers
    each_Term->expand_params1( graph  );
  // repetition edge suffix wrappers
  }

  // suffix class wrappers

  // assignments for carrying out
}

//  Kernel_Sandwich  = <first > Syntax_vertex_List 
//                  <inner > Kernel 
//                  <second > Syntax_vertex_List .
void Kernel_Sandwich::expand_params1( Cd_graph*  graph,Any_vertex_List* &  vlist,Opt_labeled_term_Sandwich* &  olts )
{
  DEM_TRACE("Kernel_Sandwich","void Kernel_Sandwich::expand_params1(Cd_graph*  graph,Any_vertex_List* &  vlist,Opt_labeled_term_Sandwich* &  olts)");
  // variables for carrying in and out

  // assignments for carrying in

  // prefix class wrappers

  // outgoing calls
  // construction edge prefix wrappers
  this->get_first()->expand_params1( graph ,  vlist ,  olts  );
  // construction edge suffix wrappers
  // construction edge prefix wrappers
  this->get_inner()->expand_params1( graph ,  vlist ,  olts  );
  // construction edge suffix wrappers
  // construction edge prefix wrappers
  this->get_second()->expand_params1( graph ,  vlist ,  olts  );
  // construction edge suffix wrappers

  // suffix class wrappers

  // assignments for carrying out
}

//  Term_Sandwich  = <first > Syntax_vertex_List 
//                <inner > Term 
//                <second > Syntax_vertex_List .
void Term_Sandwich::expand_params1( Cd_graph*  graph,Any_vertex_List* &  vlist,Opt_labeled_term_Sandwich* &  olts )
{
  DEM_TRACE("Term_Sandwich","void Term_Sandwich::expand_params1(Cd_graph*  graph,Any_vertex_List* &  vlist,Opt_labeled_term_Sandwich* &  olts)");
  // variables for carrying in and out

  // assignments for carrying in

  // prefix class wrappers

  // outgoing calls
  // construction edge prefix wrappers
  this->get_first()->expand_params1( graph ,  vlist ,  olts  );
  // construction edge suffix wrappers
  // construction edge prefix wrappers
  this->get_inner()->expand_params1( graph  );
  // construction edge suffix wrappers
  // construction edge prefix wrappers
  this->get_second()->expand_params1( graph ,  vlist ,  olts  );
  // construction edge suffix wrappers

  // suffix class wrappers

  // assignments for carrying out
}

//  Term_Comma_list  ~ Term  { Term  }. .
void Term_Comma_list::expand_params1( Cd_graph*  graph )
{
  DEM_TRACE("Term_Comma_list","void Term_Comma_list::expand_params1(Cd_graph*  graph)");
  // variables for carrying in and out

  // assignments for carrying in

  // prefix class wrappers

  // outgoing calls
  Term_list_iterator	next_Term(*this);
  Term*		each_Term;

  while ( each_Term = next_Term() )
  {
  // repetition edge prefix wrappers
    each_Term->expand_params1( graph  );
  // repetition edge suffix wrappers
  }

  // suffix class wrappers

  // assignments for carrying out
}

//  Opt_labeled_term_Sandwich  = <first > Syntax_vertex_List 
//                            <inner > Opt_labeled_term 
//                            <second > Syntax_vertex_List .
void Opt_labeled_term_Sandwich::expand_params1( Cd_graph*  graph,Any_vertex_List* &  vlist,Opt_labeled_term_Sandwich* &  olts )
{
  DEM_TRACE("Opt_labeled_term_Sandwich","void Opt_labeled_term_Sandwich::expand_params1(Cd_graph*  graph,Any_vertex_List* &  vlist,Opt_labeled_term_Sandwich* &  olts)");
  // variables for carrying in and out

  // assignments for carrying in

  // prefix class wrappers
 olts = this;
              

  // outgoing calls
  // construction edge prefix wrappers
  this->get_first()->expand_params1( graph ,  vlist ,  olts  );
  // construction edge suffix wrappers
  // construction edge prefix wrappers
  this->get_inner()->expand_params1( graph ,  vlist ,  olts  );
  // construction edge suffix wrappers
  // construction edge prefix wrappers
  this->get_second()->expand_params1( graph ,  vlist ,  olts  );
  // construction edge suffix wrappers

  // suffix class wrappers
 olts = NULL;
              

  // assignments for carrying out
}

//  Syntax_vertex_List  ~  { Syntax_vertex  }. .
void Syntax_vertex_List::expand_params1( Cd_graph*  graph,Any_vertex_List* &  vlist,Opt_labeled_term_Sandwich* &  olts )
{
  DEM_TRACE("Syntax_vertex_List","void Syntax_vertex_List::expand_params1(Cd_graph*  graph,Any_vertex_List* &  vlist,Opt_labeled_term_Sandwich* &  olts)");
  // variables for carrying in and out

  // assignments for carrying in

  // prefix class wrappers

  // outgoing calls
  Syntax_vertex_list_iterator	next_Syntax_vertex(*this);
  Syntax_vertex*		each_Syntax_vertex;

  while ( each_Syntax_vertex = next_Syntax_vertex() )
  {
  // repetition edge prefix wrappers
    each_Syntax_vertex->expand_params1( graph ,  vlist ,  olts  );
  // repetition edge suffix wrappers
  }

  // suffix class wrappers

  // assignments for carrying out
}

char*  Term::expand_params3(  )
{
  DEM_TRACE("Term","char*  Term::expand_params3()");
  char*  return_val =  NULL ;

  this->expand_params3_( return_val );
  return return_val;
}
//  Vertex  = <vertex_name > DemIdent .
void Vertex::expand_params3_( char* & return_val )
{
  DEM_TRACE("Vertex","void Vertex::expand_params3_(char* & return_val)");
  // variables for carrying in and out

  // assignments for carrying in

  // prefix class wrappers
 return_val = this->get_vertex_name()->get_val();
              

  // outgoing calls

  // suffix class wrappers

  // assignments for carrying out
}

//  Term  : Normal   |
//       CppTerm 
//           *common* <vertex > Vertex 
//                    <moduleRef > TermRef 
//                     [ <actual_parameters > Term_Comma_list  ] .
void Term::expand_params3_( char* & return_val )
{
  DEM_TRACE("Term","void Term::expand_params3_(char* & return_val)");
#ifndef NOTRACE
   DemTrace demTraceEmptyMethod(__FILE__,__LINE__,"Term",form(" at %s , ***  PREMATURELY TERMINATED *** ", this->get_type()));
#endif

}

//  CppTerm  = "$" .
void CppTerm::expand_params3_( char* & return_val )
{
  DEM_TRACE("CppTerm","void CppTerm::expand_params3_(char* & return_val)");
  // variables for carrying in and out

  // assignments for carrying in


  // prefix class wrappers

  // outgoing calls
  // inheritance edge prefix wrappers
  // construction edge prefix wrappers
  this->get_vertex()->expand_params3_( return_val );
  // construction edge suffix wrappers
  // inheritance edge prefix wrappers

  // suffix class wrappers
 if (this->get_actual_parameters()) {
                  expname1[0] = '\0';
                  this->get_actual_parameters()->expand_params4();
                  strcat(expname1, return_val);
                  return_val = &expname1[1];
                }
              

  // assignments for carrying out

}

//  Normal  = .
void Normal::expand_params3_( char* & return_val )
{
  DEM_TRACE("Normal","void Normal::expand_params3_(char* & return_val)");
  // variables for carrying in and out

  // assignments for carrying in


  // prefix class wrappers

  // outgoing calls
  // inheritance edge prefix wrappers
  // construction edge prefix wrappers
  this->get_vertex()->expand_params3_( return_val );
  // construction edge suffix wrappers
  // inheritance edge prefix wrappers

  // suffix class wrappers
 if (this->get_actual_parameters()) {
                  expname1[0] = '\0';
                  this->get_actual_parameters()->expand_params4();
                  strcat(expname1, return_val);
                  return_val = &expname1[1];
                }
              

  // assignments for carrying out

}

//  Term  : Normal   |
//       CppTerm 
//           *common* <vertex > Vertex 
//                    <moduleRef > TermRef 
//                     [ <actual_parameters > Term_Comma_list  ] .
void Term::expand_params4(  )
{
  DEM_TRACE("Term","void Term::expand_params4()");
  // variables for carrying in and out

  // assignments for carrying in

  // prefix class wrappers
 if (this->get_actual_parameters()) {
                  this->get_actual_parameters()->expand_params4();
                  strcat(expname1, this->get_term_name());
                  strcat(expname1, "_");
                }
                else {
                  strcpy(expname2, "_");
                  strcat(expname2, this->get_term_name());
                  strcat(expname2, "_");
                  strcat(expname2, expname1);
                  strcpy(expname1, expname2);
                }  
              


  // suffix class wrappers

  // assignments for carrying out
}

//  Term_Comma_list  ~ Term  { Term  }. .
void Term_Comma_list::expand_params4(  )
{
  DEM_TRACE("Term_Comma_list","void Term_Comma_list::expand_params4()");
  // variables for carrying in and out

  // assignments for carrying in

  // prefix class wrappers

  // outgoing calls
  Term_list_iterator	next_Term(*this);
  Term*		each_Term;

  while ( each_Term = next_Term() )
  {
  // repetition edge prefix wrappers
    each_Term->expand_params4(  );
  // repetition edge suffix wrappers
  }

  // suffix class wrappers

  // assignments for carrying out
}

//  Adjacency  = <source > Vertex 
//             [ <parameters > Vertex_Comma_list  ] 
//            <ns > Neighbors 
//            "." 
//            *l.
void Adjacency::expand_params6( Term*  t,Vertex*  v )
{
  DEM_TRACE("Adjacency","void Adjacency::expand_params6(Term*  t,Vertex*  v)");
  // variables for carrying in and out
  Vertex_Comma_list*  params =  this->get_parameters() ;

  // assignments for carrying in

  // prefix class wrappers
 this->get_source()->g_delete();
                this->set_source(v);
              

  // outgoing calls
  // construction edge prefix wrappers
  this->get_ns()->expand_params6( t ,  v , params  );
  // construction edge suffix wrappers

  // suffix class wrappers
 this->get_parameters()->g_delete();
                this->set_parameters(NULL);
              

  // assignments for carrying out
}

//  Neighbors  : Neighbors_wc   |
//            Repetit_n 
//           *common* .
void Neighbors::expand_params6( Term*  t,Vertex*  v, Vertex_Comma_list*  params )
{
  DEM_TRACE("Neighbors","void Neighbors::expand_params6(Term*  t,Vertex*  v,Vertex_Comma_list*  params)");
#ifndef NOTRACE
   DemTrace demTraceEmptyMethod(__FILE__,__LINE__,"Neighbors",form(" at %s , ***  PREMATURELY TERMINATED *** ", this->get_type()));
#endif

}

//  Neighbors_wc  : Construct_ns   |
//               Alternat_ns 
//           *common* +
//                    <construct_ns > Any_vertex_List 
//                    -.
void Neighbors_wc::expand_params6( Term*  t,Vertex*  v, Vertex_Comma_list*  params )
{
  DEM_TRACE("Neighbors_wc","void Neighbors_wc::expand_params6(Term*  t,Vertex*  v,Vertex_Comma_list*  params)");
#ifndef NOTRACE
   DemTrace demTraceEmptyMethod(__FILE__,__LINE__,"Neighbors_wc",form(" at %s , ***  PREMATURELY TERMINATED *** ", this->get_type()));
#endif

}

//  Construct_ns  = "=" .
void Construct_ns::expand_params6( Term*  t,Vertex*  v, Vertex_Comma_list*  params )
{
  DEM_TRACE("Construct_ns","void Construct_ns::expand_params6(Term*  t,Vertex*  v,Vertex_Comma_list*  params)");
  // variables for carrying in and out

  // assignments for carrying in



  // prefix class wrappers

  // outgoing calls
  // inheritance edge prefix wrappers
  // construction edge prefix wrappers
  this->get_construct_ns()->expand_params6( t ,  v , params  );
  // construction edge suffix wrappers
  // inheritance edge prefix wrappers

  // suffix class wrappers

  // assignments for carrying out


}

//  Alternat_ns  = ":" 
//              +
//              <alternat_ns > Term_Bar_list 
//              -
//               [ <common > Common  ] .
void Alternat_ns::expand_params6( Term*  t,Vertex*  v, Vertex_Comma_list*  params )
{
  DEM_TRACE("Alternat_ns","void Alternat_ns::expand_params6(Term*  t,Vertex*  v,Vertex_Comma_list*  params)");
  // variables for carrying in and out

  // assignments for carrying in



  // prefix class wrappers

  // outgoing calls
  // construction edge prefix wrappers
  this->get_alternat_ns()->expand_params6( t ,  v , params  );
  // construction edge suffix wrappers
  // inheritance edge prefix wrappers
  // construction edge prefix wrappers
  this->get_construct_ns()->expand_params6( t ,  v , params  );
  // construction edge suffix wrappers
  // inheritance edge prefix wrappers

  // suffix class wrappers

  // assignments for carrying out


}

//  Repetit_n  = "~" 
//            <sandwiched > Kernel_Sandwich .
void Repetit_n::expand_params6( Term*  t,Vertex*  v, Vertex_Comma_list*  params )
{
  DEM_TRACE("Repetit_n","void Repetit_n::expand_params6(Term*  t,Vertex*  v,Vertex_Comma_list*  params)");
  // variables for carrying in and out

  // assignments for carrying in


  // prefix class wrappers

  // outgoing calls
  // construction edge prefix wrappers
  this->get_sandwiched()->expand_params6( t ,  v , params  );
  // construction edge suffix wrappers

  // suffix class wrappers

  // assignments for carrying out

}

//  Kernel  =  [ <nonempty > Term  ] 
//         "{" 
//         <repeated > Term_Sandwich 
//         "}" .
void Kernel::expand_params6( Term*  t,Vertex*  v, Vertex_Comma_list*  params )
{
  DEM_TRACE("Kernel","void Kernel::expand_params6(Term*  t,Vertex*  v,Vertex_Comma_list*  params)");
  // variables for carrying in and out

  // assignments for carrying in

  // prefix class wrappers

  // outgoing calls
  if ( this->get_nonempty() != NULL )
  {
  // construction edge prefix wrappers
    this->get_nonempty()->expand_params6( t ,  v , params  );
  // construction edge prefix wrappers
  }
  // construction edge prefix wrappers
  this->get_repeated()->expand_params6( t ,  v , params  );
  // construction edge suffix wrappers

  // suffix class wrappers

  // assignments for carrying out
}

//  Any_vertex  : Opt_labeled_term   |
//             Optional_term   |
//             Syntax_vertex   |
//             Inherit_term 
//           *common* .
void Any_vertex::expand_params6( Term*  t,Vertex*  v, Vertex_Comma_list*  params )
{
  DEM_TRACE("Any_vertex","void Any_vertex::expand_params6(Term*  t,Vertex*  v,Vertex_Comma_list*  params)");
#ifndef NOTRACE
   DemTrace demTraceEmptyMethod(__FILE__,__LINE__,"Any_vertex",form(" at %s , ***  PREMATURELY TERMINATED *** ", this->get_type()));
#endif

}

//  Opt_labeled_term  : Labeled   |
//                   Regular 
//           *common*  [ <staticspec > StaticSpec  ] 
//                     [ <accessorspec > AccessorSpec  ] 
//                    <vertex > Term .
void Opt_labeled_term::expand_params6( Term*  t,Vertex*  v, Vertex_Comma_list*  params )
{
  DEM_TRACE("Opt_labeled_term","void Opt_labeled_term::expand_params6(Term*  t,Vertex*  v,Vertex_Comma_list*  params)");
#ifndef NOTRACE
   DemTrace demTraceEmptyMethod(__FILE__,__LINE__,"Opt_labeled_term",form(" at %s , ***  PREMATURELY TERMINATED *** ", this->get_type()));
#endif

}

//  Regular  = .
void Regular::expand_params6( Term*  t,Vertex*  v, Vertex_Comma_list*  params )
{
  DEM_TRACE("Regular","void Regular::expand_params6(Term*  t,Vertex*  v,Vertex_Comma_list*  params)");
  // variables for carrying in and out

  // assignments for carrying in



  // prefix class wrappers

  // outgoing calls
  // inheritance edge prefix wrappers
  // construction edge prefix wrappers
  this->get_vertex()->expand_params6( t ,  v , params  );
  // construction edge suffix wrappers
  // inheritance edge prefix wrappers

  // suffix class wrappers

  // assignments for carrying out


}

//  Labeled  = "<" 
//          <label_name > DemIdent 
//          ">" .
void Labeled::expand_params6( Term*  t,Vertex*  v, Vertex_Comma_list*  params )
{
  DEM_TRACE("Labeled","void Labeled::expand_params6(Term*  t,Vertex*  v,Vertex_Comma_list*  params)");
  // variables for carrying in and out

  // assignments for carrying in



  // prefix class wrappers

  // outgoing calls
  // inheritance edge prefix wrappers
  // construction edge prefix wrappers
  this->get_vertex()->expand_params6( t ,  v , params  );
  // construction edge suffix wrappers
  // inheritance edge prefix wrappers

  // suffix class wrappers

  // assignments for carrying out


}

//  Inherit_term  = "*inherit*" 
//               <inherited > Term_Comma_list .
void Inherit_term::expand_params6( Term*  t,Vertex*  v, Vertex_Comma_list*  params )
{
  DEM_TRACE("Inherit_term","void Inherit_term::expand_params6(Term*  t,Vertex*  v,Vertex_Comma_list*  params)");
  // variables for carrying in and out

  // assignments for carrying in


  // prefix class wrappers

  // outgoing calls
  // construction edge prefix wrappers
  this->get_inherited()->expand_params6( t ,  v , params  );
  // construction edge suffix wrappers

  // suffix class wrappers

  // assignments for carrying out

}

//  Term  : Normal   |
//       CppTerm 
//           *common* <vertex > Vertex 
//                    <moduleRef > TermRef 
//                     [ <actual_parameters > Term_Comma_list  ] .
void Term::expand_params6( Term*  t,Vertex*  v, Vertex_Comma_list*  params )
{
  DEM_TRACE("Term","void Term::expand_params6(Term*  t,Vertex*  v,Vertex_Comma_list*  params)");
  // variables for carrying in and out

  // assignments for carrying in

  // prefix class wrappers
 
    int index = params->expand_params7(this->get_vertex());
                if (index >= 0) {
                  Term* ti = t->get_actual_parameters()->n_th(index);
                  this->set_vertex((Vertex*)ti->get_vertex()->g_copy());
                  this->set_moduleRef((TermRef*)ti->get_moduleRef()->g_copy());
                  if (ti->get_actual_parameters() == NULL)
                    this->set_actual_parameters(NULL);
                  else 
                    this->set_actual_parameters((Term_Comma_list*)
                                                ti->get_actual_parameters()->g_copy());
                }
              


  // suffix class wrappers

  // assignments for carrying out
}

//  CppTerm  = "$" .
void CppTerm::expand_params6( Term*  t,Vertex*  v, Vertex_Comma_list*  params )
{
  DEM_TRACE("CppTerm","void CppTerm::expand_params6(Term*  t,Vertex*  v,Vertex_Comma_list*  params)");
  // variables for carrying in and out

  // assignments for carrying in


  // prefix class wrappers
 
    int index = params->expand_params7(this->get_vertex());
                if (index >= 0) {
                  Term* ti = t->get_actual_parameters()->n_th(index);
                  this->set_vertex((Vertex*)ti->get_vertex()->g_copy());
                  this->set_moduleRef((TermRef*)ti->get_moduleRef()->g_copy());
                  if (ti->get_actual_parameters() == NULL)
                    this->set_actual_parameters(NULL);
                  else 
                    this->set_actual_parameters((Term_Comma_list*)
                                                ti->get_actual_parameters()->g_copy());
                }
              

  // outgoing calls
  // inheritance edge prefix wrappers
  if ( this->get_actual_parameters() != NULL )
  {
  // construction edge prefix wrappers
    this->get_actual_parameters()->expand_params6( t ,  v , params  );
  // construction edge prefix wrappers
  }
  // inheritance edge prefix wrappers

  // suffix class wrappers

  // assignments for carrying out

}

//  Normal  = .
void Normal::expand_params6( Term*  t,Vertex*  v, Vertex_Comma_list*  params )
{
  DEM_TRACE("Normal","void Normal::expand_params6(Term*  t,Vertex*  v,Vertex_Comma_list*  params)");
  // variables for carrying in and out

  // assignments for carrying in


  // prefix class wrappers
 
    int index = params->expand_params7(this->get_vertex());
                if (index >= 0) {
                  Term* ti = t->get_actual_parameters()->n_th(index);
                  this->set_vertex((Vertex*)ti->get_vertex()->g_copy());
                  this->set_moduleRef((TermRef*)ti->get_moduleRef()->g_copy());
                  if (ti->get_actual_parameters() == NULL)
                    this->set_actual_parameters(NULL);
                  else 
                    this->set_actual_parameters((Term_Comma_list*)
                                                ti->get_actual_parameters()->g_copy());
                }
              

  // outgoing calls
  // inheritance edge prefix wrappers
  if ( this->get_actual_parameters() != NULL )
  {
  // construction edge prefix wrappers
    this->get_actual_parameters()->expand_params6( t ,  v , params  );
  // construction edge prefix wrappers
  }
  // inheritance edge prefix wrappers

  // suffix class wrappers

  // assignments for carrying out

}

//  Optional_term  = "[" 
//                <opt > Opt_labeled_term_Sandwich 
//                "]" .
void Optional_term::expand_params6( Term*  t,Vertex*  v, Vertex_Comma_list*  params )
{
  DEM_TRACE("Optional_term","void Optional_term::expand_params6(Term*  t,Vertex*  v,Vertex_Comma_list*  params)");
  // variables for carrying in and out

  // assignments for carrying in


  // prefix class wrappers

  // outgoing calls
  // construction edge prefix wrappers
  this->get_opt()->expand_params6( t ,  v , params  );
  // construction edge suffix wrappers

  // suffix class wrappers

  // assignments for carrying out

}

//  Any_vertex_List  ~  { Any_vertex  }. .
void Any_vertex_List::expand_params6( Term*  t,Vertex*  v, Vertex_Comma_list*  params )
{
  DEM_TRACE("Any_vertex_List","void Any_vertex_List::expand_params6(Term*  t,Vertex*  v,Vertex_Comma_list*  params)");
  // variables for carrying in and out

  // assignments for carrying in

  // prefix class wrappers

  // outgoing calls
  Any_vertex_list_iterator	next_Any_vertex(*this);
  Any_vertex*		each_Any_vertex;

  while ( each_Any_vertex = next_Any_vertex() )
  {
  // repetition edge prefix wrappers
    each_Any_vertex->expand_params6( t ,  v , params  );
  // repetition edge suffix wrappers
  }

  // suffix class wrappers

  // assignments for carrying out
}

//  Term_Bar_list  ~ Term  { Term  }. .
void Term_Bar_list::expand_params6( Term*  t,Vertex*  v, Vertex_Comma_list*  params )
{
  DEM_TRACE("Term_Bar_list","void Term_Bar_list::expand_params6(Term*  t,Vertex*  v,Vertex_Comma_list*  params)");
  // variables for carrying in and out

  // assignments for carrying in

  // prefix class wrappers

  // outgoing calls
  Term_list_iterator	next_Term(*this);
  Term*		each_Term;

  while ( each_Term = next_Term() )
  {
  // repetition edge prefix wrappers
    each_Term->expand_params6( t ,  v , params  );
  // repetition edge suffix wrappers
  }

  // suffix class wrappers

  // assignments for carrying out
}

//  Kernel_Sandwich  = <first > Syntax_vertex_List 
//                  <inner > Kernel 
//                  <second > Syntax_vertex_List .
void Kernel_Sandwich::expand_params6( Term*  t,Vertex*  v, Vertex_Comma_list*  params )
{
  DEM_TRACE("Kernel_Sandwich","void Kernel_Sandwich::expand_params6(Term*  t,Vertex*  v,Vertex_Comma_list*  params)");
  // variables for carrying in and out

  // assignments for carrying in

  // prefix class wrappers

  // outgoing calls
  // construction edge prefix wrappers
  this->get_inner()->expand_params6( t ,  v , params  );
  // construction edge suffix wrappers

  // suffix class wrappers

  // assignments for carrying out
}

//  Term_Sandwich  = <first > Syntax_vertex_List 
//                <inner > Term 
//                <second > Syntax_vertex_List .
void Term_Sandwich::expand_params6( Term*  t,Vertex*  v, Vertex_Comma_list*  params )
{
  DEM_TRACE("Term_Sandwich","void Term_Sandwich::expand_params6(Term*  t,Vertex*  v,Vertex_Comma_list*  params)");
  // variables for carrying in and out

  // assignments for carrying in

  // prefix class wrappers

  // outgoing calls
  // construction edge prefix wrappers
  this->get_inner()->expand_params6( t ,  v , params  );
  // construction edge suffix wrappers

  // suffix class wrappers

  // assignments for carrying out
}

//  Term_Comma_list  ~ Term  { Term  }. .
void Term_Comma_list::expand_params6( Term*  t,Vertex*  v, Vertex_Comma_list*  params )
{
  DEM_TRACE("Term_Comma_list","void Term_Comma_list::expand_params6(Term*  t,Vertex*  v,Vertex_Comma_list*  params)");
  // variables for carrying in and out

  // assignments for carrying in

  // prefix class wrappers

  // outgoing calls
  Term_list_iterator	next_Term(*this);
  Term*		each_Term;

  while ( each_Term = next_Term() )
  {
  // repetition edge prefix wrappers
    each_Term->expand_params6( t ,  v , params  );
  // repetition edge suffix wrappers
  }

  // suffix class wrappers

  // assignments for carrying out
}

//  Opt_labeled_term_Sandwich  = <first > Syntax_vertex_List 
//                            <inner > Opt_labeled_term 
//                            <second > Syntax_vertex_List .
void Opt_labeled_term_Sandwich::expand_params6( Term*  t,Vertex*  v, Vertex_Comma_list*  params )
{
  DEM_TRACE("Opt_labeled_term_Sandwich","void Opt_labeled_term_Sandwich::expand_params6(Term*  t,Vertex*  v,Vertex_Comma_list*  params)");
  // variables for carrying in and out

  // assignments for carrying in

  // prefix class wrappers

  // outgoing calls
  // construction edge prefix wrappers
  this->get_inner()->expand_params6( t ,  v , params  );
  // construction edge suffix wrappers

  // suffix class wrappers

  // assignments for carrying out
}

int Vertex_Comma_list::expand_params7( Vertex*  v )
{
  DEM_TRACE("Vertex_Comma_list","int Vertex_Comma_list::expand_params7(Vertex*  v)");
  int return_val =  -1 ;

  this->expand_params7_( return_val, v  );
  return return_val;
}
//  Vertex  = <vertex_name > DemIdent .
void Vertex::expand_params7_( int& return_val, Vertex*  v, int&  index )
{
  DEM_TRACE("Vertex","void Vertex::expand_params7_(int& return_val,Vertex*  v,int&  index)");
  // variables for carrying in and out

  // assignments for carrying in

  // prefix class wrappers
 index++;
                if (this->g_equal(v)) return_val = index;
              

  // outgoing calls

  // suffix class wrappers

  // assignments for carrying out
}

//  Vertex_Comma_list  ~ Vertex  { Vertex  }. .
void Vertex_Comma_list::expand_params7_( int& return_val, Vertex*  v )
{
  DEM_TRACE("Vertex_Comma_list","void Vertex_Comma_list::expand_params7_(int& return_val,Vertex*  v)");
  // variables for carrying in and out
  int index =  0 ;

  // assignments for carrying in

  // prefix class wrappers

  // outgoing calls
  Vertex_list_iterator	next_Vertex(*this);
  Vertex*		each_Vertex;

  while ( each_Vertex = next_Vertex() )
  {
  // repetition edge prefix wrappers
    each_Vertex->expand_params7_( return_val, v , index  );
  // repetition edge suffix wrappers
  }

  // suffix class wrappers

  // assignments for carrying out
}

//  Adjacency  = <source > Vertex 
//             [ <parameters > Vertex_Comma_list  ] 
//            <ns > Neighbors 
//            "." 
//            *l.
void Adjacency::expand_params8( Cd_graph*  g )
{
  DEM_TRACE("Adjacency","void Adjacency::expand_params8(Cd_graph*  g)");
  // variables for carrying in and out

  // assignments for carrying in

  // prefix class wrappers
 if (this->get_parameters() == NULL) {
                  g->get_adjacencies()->append(this);
                }
              

  // outgoing calls

  // suffix class wrappers

  // assignments for carrying out
}

//  Adjacency_Nlist  ~ Adjacency  { Adjacency  }. .
void Adjacency_Nlist::expand_params8( Cd_graph*  g )
{
  DEM_TRACE("Adjacency_Nlist","void Adjacency_Nlist::expand_params8(Cd_graph*  g)");
  // variables for carrying in and out

  // assignments for carrying in

  // prefix class wrappers

  // outgoing calls
  Adjacency_list_iterator	next_Adjacency(*this);
  Adjacency*		each_Adjacency;

  while ( each_Adjacency = next_Adjacency() )
  {
  // repetition edge prefix wrappers
    each_Adjacency->expand_params8( g  );
  // repetition edge suffix wrappers
  }

  // suffix class wrappers

  // assignments for carrying out
}


