00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #include <lestes/lang/cplus/syn/errors.hh>
00029 #include <lestes/lang/cplus/syn/errors.m.hh>
00030 #include <lestes/lang/cplus/syn/token.hh>
00031
00032 package(lestes);
00033 package(lang);
00034 package(cplus);
00035 package(syn);
00036
00037 void syntax_error::disa_stmt( ptr<bison_pack_token> error_pack,
00038 ptr<source_location> suberr_loc1, ptr<source_location> suberr_loc2 )
00039 {
00040 #if OLD_ERROR_WANTED
00041 ptr<source_location> at_loc = error_pack->location_get();
00042 report << disa_failed << at_loc;
00043 if (suberr_loc1->order_get() != at_loc->order_get())
00044 report << sub_error << suberr_loc1;
00045 if (suberr_loc2->order_get() != at_loc->order_get() &&
00046 suberr_loc2->order_get() != suberr_loc1->order_get())
00047 report << sub_error << suberr_loc2;
00048 #else
00049 report << disa_failed << suberr_loc1;
00050 if (suberr_loc2->order_get() != suberr_loc1->order_get())
00051 report << or_here << suberr_loc2;
00052 #endif
00053 report << cont_here << error_pack->end_location_get();
00054 }
00055
00056 void syntax_error::condition( ptr<bison_pack_token> error_pack,
00057 ptr<source_location> suberr_loc1, ptr<source_location> suberr_loc2 )
00058 {
00059
00060
00061
00062
00063
00064 if (error_pack->pack_get()->empty())
00065 report << empty_condition << error_pack->location_get();
00066 else {
00067 report << invalid_cond << suberr_loc1;
00068 if (suberr_loc2->order_get() != suberr_loc1->order_get())
00069 report << or_here << suberr_loc2;
00070 }
00071 }
00072
00073 end_package(syn);
00074 end_package(cplus);
00075 end_package(lang);
00076 end_package(lestes);