#include "semcheck.h" /********************************************************************* ** File Name : check_regular_partclass.c ** ** ** **********************************************************************/ #include int containUppercase(DemIdent* id) { char *cursor; cursor = id->get_val(); while (cursor[0]) if ((cursor[0]>='A')&&(cursor[0]<='Z')) return SUCCESS; else cursor++; return ERROR_REGULAR; } int Cd_graph::check_regular_partclass() { return adjacencies->check_regular_partclass(); } int Adjacency_Nlist::check_regular_partclass() { int result = SUCCESS; Adjacency_list_iterator next(*this); Adjacency_ each; while (each=next()) if (each->check_regular_partclass()==ERROR_REGULAR) result = ERROR_REGULAR; return result; } int Adjacency::check_regular_partclass() { return ns->check_regular_partclass(this); } int Neighbors::check_regular_partclass(Adjacency *adj) { return 0; } int Repetit_n::check_regular_partclass(Adjacency *adj) { return YES; } int Neighbors_wc::check_regular_partclass(Adjacency *adj) { return construct_ns->check_regular_partclass(adj); } int Any_vertex_List::check_regular_partclass(Adjacency *adj) { int result = YES; Any_vertex_list_iterator next(*this); Any_vertex_ each; while (each=next()) if (each->check_regular_partclass(adj)==ERROR_REGULAR) result = ERROR_REGULAR; return result; } int Any_vertex::check_regular_partclass(Adjacency *adj) { return YES; } int Opt_labeled_term::check_regular_partclass(Adjacency *adj) { return YES; } int Regular::check_regular_partclass(Adjacency *adj) { if (this->get_vertex()->check_regular_partclass()==ERROR_REGULAR) { cerr << toolname << ": error: on line " << this->get_vertex()->get_vertex()->get_vertex_name()->get_line_number() << " class '"; this->pp(cerr); cerr << "' contains no CAPITAL letter but is used without a label.\n" << endl; return ERROR_REGULAR; } else return YES; } int Term::check_regular_partclass() { if (this->get_vertex()->check_regular_partclass()!=ERROR_REGULAR) return YES; if (actual_parameters) return actual_parameters->check_regular_partclass(); else return ERROR_REGULAR; } int Term_Comma_list::check_regular_partclass() { int result = ERROR_REGULAR; Term_list_iterator next(*this); Term_ each; while (each=next()) if (each->check_regular_partclass()!=ERROR_REGULAR) result = YES; return (result); } int Vertex::check_regular_partclass() { return containUppercase(this->get_vertex_name()); } int Optional_term::check_regular_partclass(Adjacency *adj) { return opt->check_regular_partclass(adj); } int Opt_labeled_term_Sandwich::check_regular_partclass(Adjacency *adj) { return inner->check_regular_partclass(adj); }