lestes::lang::cplus::syn Namespace Reference


Classes

class  dump_at_lassert
 Contains a dump action called at lassert event. More...
class  dump_context_at_lassert
 Contains a dump action called at lassert event. More...
class  syntax_error
class  one_hinter
class  elab_spec_key
class  elab_spec_enum
class  elab_spec_class_key
class  hint_from_declaration_set
class  typedef_class_resolver
class  hinter
class  spawn_hinter_action
class  close_hinter_action
class  push_state_action
class  pop_state_action
class  streamer
class  source_streamer
class  pack_streamer
class  transaction
class  undo_delete_token
class  undo_unpack
class  one_manager
class  manager
class  parse_result_type
 Class that contains data about a finished parser run. More...
class  parser
struct  prefix2hint_map_item
class  prefixer
class  semref
class  semval
class  bison_token
class  bison_madeup_token
class  bison_id_token
class  bison_pack_token

Typedefs

typedef list< srp< one_hinter > > hinter_stack_type
typedef list< srp< bison_token > > token_list_type
typedef token_list_type::iterator token_list_iterator
typedef list< srp< action > > action_list_type
typedef list< token_list_iteratoriter_list_type
typedef list< srp< one_manager > > mgr_stack_type
typedef ::lestes::intercode::as_base semref_type

Functions

int do_it (bool flat_dump, lstring filename, lstring ss_filename, bool hinter_on)
ptr< ::lestes::msg::message_stencil1<
lstring > > 
parse_error (::lestes::msg::message_stencil1< lstring >::create("%0",::lestes::msg::message::FLG_ERROR,::lestes::msg::formatter< lstring >::instance()))
ptr< ::lestes::msg::message_stencil0<
bool > > 
disa_failed (::lestes::msg::message_stencil0< bool >::create("syntax error",::lestes::msg::message::FLG_ERROR))
ptr< ::lestes::msg::message_stencil0<
bool > > 
sub_error (::lestes::msg::message_stencil0< bool >::create(" sub-error here",::lestes::msg::message::FLG_ERROR))
ptr< ::lestes::msg::message_stencil0<
bool > > 
cont_here (::lestes::msg::message_stencil0< bool >::create(" continuing here",::lestes::msg::message::FLG_ERROR))
ptr< ::lestes::msg::message_stencil0<
bool > > 
unmatched_open (::lestes::msg::message_stencil0< bool >::create("syntax error: unmatched opening",::lestes::msg::message::FLG_ERROR))
ptr< ::lestes::msg::message_stencil0<
bool > > 
invalid_cond (::lestes::msg::message_stencil0< bool >::create("syntax error: error in condition",::lestes::msg::message::FLG_ERROR))
ptr< ::lestes::msg::message_stencil0<
bool > > 
or_here (::lestes::msg::message_stencil0< bool >::create(" possibly here",::lestes::msg::message::FLG_ERROR))
ptr< ::lestes::msg::message_stencil0<
bool > > 
empty_condition (::lestes::msg::message_stencil0< bool >::create("syntax error: empty condition not allowed here",::lestes::msg::message::FLG_ERROR))
ptr< ::lestes::msg::message_stencil0<
bool > > 
bad_end (::lestes::msg::message_stencil0< bool >::create("syntax error: unexpected end",::lestes::msg::message::FLG_ERROR))
ptr< ::lestes::msg::message_stencil0<
bool > > 
bad_global_qual (::lestes::msg::message_stencil0< bool >::create("global qualification (::) not allowed here",::lestes::msg::message::FLG_ERROR))
ptr< ::lestes::msg::message_stencil0<
bool > > 
wrong_before_coloncolon (::lestes::msg::message_stencil0< bool >::create("name followed by :: is not a class, nor a namespace name",::lestes::msg::message::FLG_ERROR))
ptr< ::lestes::msg::message_stencil0<
bool > > 
unknown_before_coloncolon (::lestes::msg::message_stencil0< bool >::create("unknown name followed by ::",::lestes::msg::message::FLG_ERROR))
 declare_logger (hl)
 initialize_logger (hl,"hinter", syn_logger)
static ptr< declaration_set_type > unqualified (const ptr< ss_decl_name > &name, const ptr< ss_decl_seq > &seq)
static ptr< declaration_set_type > unqualified_elab (const ptr< ss_decl_name > &name, const ptr< ss_decl_seq > &seq)
static ptr< declaration_set_type > look_first (const ptr< ss_decl_name > &name, const ptr< ss_decl_seq > &seq)
static ptr< declaration_set_type > look_last (const ptr< ss_decl_name > &name, const ptr< ss_decl_seq > &seq)
static ptr< declaration_set_type > look_last_elab (const ptr< ss_decl_name > &name, const ptr< ss_decl_seq > &seq)
static ptr< declaration_set_type > middle (const ptr< ss_decl_name > &name, const ptr< ss_decl_seq > &seq)
static ptr< declaration_set_type > nmspace (const ptr< ss_decl_name > &name, const ptr< ss_decl_seq > &seq)
 declare_logger (ml)
 initialize_logger (ml,"manager", syn_logger)
 initialize_event (manager::spawn_event)
 initialize_event (manager::close_event)
 initialize_event (manager::start_event)
 initialize_event (manager::commit_event)
 initialize_event (manager::rollback_event)
 declare_logger (pl)
 initialize_logger (pl,"parser", syn_logger)
static int yylex (semval *sv)
static void yyerror (ptr< as_base > &, const char *str)
 declare_logger (prl)
 initialize_logger (prl,"prefixer", syn_logger)
 initialize_logger (syn_logger,"syn", cplus_logger)
 declare_logger (syn_logger)
int do_it (bool flat_dump, lstring filename, lstring ss_filename, lstring context_filename, bool hinter_on)
static lstring hint2str (bison_token::hint_type hint)
static lstring hinted_by2str (bison_id_token::hinted_by_type hb)
::std::ostream & operator<< (::std::ostream &os, const ptr< bison_token > &bt)

Variables

ptr< ::lestes::msg::message_stencil1<
lstring > > 
parse_error
ptr< ::lestes::msg::message_stencil0<
bool > > 
disa_failed
ptr< ::lestes::msg::message_stencil0<
bool > > 
sub_error
ptr< ::lestes::msg::message_stencil0<
bool > > 
cont_here
ptr< ::lestes::msg::message_stencil0<
bool > > 
unmatched_open
ptr< ::lestes::msg::message_stencil0<
bool > > 
invalid_cond
ptr< ::lestes::msg::message_stencil0<
bool > > 
or_here
ptr< ::lestes::msg::message_stencil0<
bool > > 
empty_condition
ptr< ::lestes::msg::message_stencil0<
bool > > 
bad_end
ptr< ::lestes::msg::message_stencil0<
bool > > 
bad_global_qual
ptr< ::lestes::msg::message_stencil0<
bool > > 
wrong_before_coloncolon
ptr< ::lestes::msg::message_stencil0<
bool > > 
unknown_before_coloncolon
static ptr< hinter_stack_typehinter_stack
static ptr< mgr_stack_typemgr_stack
static struct lestes::lang::cplus::syn::prefix2hint_map_item prefix2hint_map []


Typedef Documentation

typedef list< srp<action> > lestes::lang::cplus::syn::action_list_type

Definition at line 51 of file manager.cc.

typedef list< srp<one_hinter> > lestes::lang::cplus::syn::hinter_stack_type

Definition at line 223 of file hinter.cc.

typedef list<token_list_iterator> lestes::lang::cplus::syn::iter_list_type

Definition at line 74 of file manager.cc.

typedef list< srp<one_manager> > lestes::lang::cplus::syn::mgr_stack_type

Definition at line 598 of file manager.cc.

typedef ::lestes::intercode::as_base lestes::lang::cplus::syn::semref_type

Definition at line 37 of file semval.hh.

typedef token_list_type::iterator lestes::lang::cplus::syn::token_list_iterator

Definition at line 50 of file manager.cc.

typedef list< srp<bison_token> > lestes::lang::cplus::syn::token_list_type

Definition at line 47 of file manager.cc.


Function Documentation

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::syn::bad_end ( ::lestes::msg::message_stencil0< bool >::  create("syntax error: unexpected end",::lestes::msg::message::FLG_ERROR)  ) 

Referenced by yyerror().

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::syn::bad_global_qual ( ::lestes::msg::message_stencil0< bool >::  create("global qualification (::) not allowed here",::lestes::msg::message::FLG_ERROR)  ) 

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::syn::cont_here ( ::lestes::msg::message_stencil0< bool >::  create(" continuing here",::lestes::msg::message::FLG_ERROR)  ) 

lestes::lang::cplus::syn::declare_logger ( syn_logger   ) 

lestes::lang::cplus::syn::declare_logger ( prl   ) 

lestes::lang::cplus::syn::declare_logger ( pl   ) 

lestes::lang::cplus::syn::declare_logger ( ml   ) 

lestes::lang::cplus::syn::declare_logger ( hl   ) 

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::syn::disa_failed ( ::lestes::msg::message_stencil0< bool >::  create("syntax error",::lestes::msg::message::FLG_ERROR)  ) 

int lestes::lang::cplus::syn::do_it ( bool  flat_dump,
lstring  filename,
lstring  ss_filename,
lstring  context_filename,
bool  hinter_on 
)

Definition at line 56 of file test.cc.

References as_result, lestes::lang::cplus::lex::file_system::create(), lestes::lang::cplus::sem::dump(), lestes::std::dumper::dump(), and lestes::lang::cplus::sem::sa_statements::instance().

Referenced by main().

00057 {
00058         /* lex init */
00059         ptr<prefixer::preprocessor> pp =
00060                 prefixer::preprocessor::create(
00061                         ::lestes::lang::cplus::lex::file_system::create(), "" );
00062 
00063         /* syn init */
00064         prefixer::init( prefixer::PREFIX_ON, pp );
00065         manager::init();
00066         hinter::init( hinter_on ? hinter::HINTER_CHECK : hinter::HINTER_OFF );
00067         parser::init();
00068 	::lestes::lang::cplus::sem::sa_statements::instance();
00069         lassert_event->attach(dump_at_lassert::create(ss_filename));
00070         lassert_event->attach(dump_context_at_lassert::create(context_filename));
00071 
00072 //F//   //FIXME: this should be done elsewhere
00073 //F//   hinter::forced_scope_set( ss_decl_seq::root_instance() );
00074 //F//   // end
00075 
00076         ptr<parse_result_type> parse_result = parser::parse();
00077         bool success = parse_result->success_get();
00078         ::std::cout << "top level parser " <<
00079                 (success ? "succeeded" : "failed") << ::std::endl;
00080 
00081         ptr< ::lestes::intercode::as_base > as_result = parse_result->as_result_get();
00082         if (filename != "" && as_result) {
00083                 ::std::ofstream f(filename.c_str());
00084                 if (flat_dump)
00085 			::lestes::std::dumper::dump( f, as_result );
00086                 else
00087 			::lestes::std::readable_dumper::dump( f, as_result );
00088                 f.close();
00089         }
00090 
00091         if (ss_filename != "") {
00092                 ::std::ofstream f(ss_filename.c_str());
00093                 if (flat_dump)
00094 			::lestes::std::dumper::dump(f, sem::ss_decl_seq::root_instance());
00095                 else
00096 			::lestes::std::readable_dumper::dump(f, sem::ss_decl_seq::root_instance());
00097                 f.close();
00098         }
00099 
00100         if (context_filename != "") {
00101                 ::std::ofstream f(context_filename.c_str());
00102                 if (flat_dump)
00103 			::lestes::std::dumper::dump(f, sa_context_manager::instance());
00104                 else
00105 			::lestes::std::readable_dumper::dump(f, sa_context_manager::instance());
00106                 f.close();
00107         }
00108 
00109         return success ? 0 : 1;
00110 }

int lestes::lang::cplus::syn::do_it ( bool  flat_dump,
lstring  filename,
lstring  ss_filename,
bool  hinter_on 
)

Definition at line 61 of file ss2pi.test.cc.

References as_result, lestes::lang::cplus::lex::file_system::create(), lestes::lang::cplus::sem::dump(), lestes::std::dumper::dump(), lestes::lang::cplus::sem::sa_statements::instance(), and lestes::lang::cplus::sem::ss2pi_start().

00062 {
00063         /* lex init */
00064         ptr<prefixer::preprocessor> pp =
00065                 prefixer::preprocessor::create(
00066                         ::lestes::lang::cplus::lex::file_system::create(), "" );
00067 
00068         /* syn init */
00069         prefixer::init( prefixer::PREFIX_ON, pp );
00070         manager::init();
00071         hinter::init( hinter_on ? hinter::HINTER_CHECK : hinter::HINTER_OFF );
00072         parser::init();
00073 	::lestes::lang::cplus::sem::sa_statements::instance();
00074 
00075 //F//   //FIXME: this should be done elsewhere
00076 //F//   hinter::forced_scope_set( ss_decl_seq::root_instance() );
00077 //F//   // end
00078 
00079         ptr<parse_result_type> parse_result = parser::parse();
00080         bool success = parse_result->success_get();
00081         ::std::cout << (success ? "succeeded" : "failed") << ::std::endl;
00082 
00083         ptr< ::lestes::intercode::as_base > as_result = parse_result->as_result_get();
00084         if (filename != "" && as_result) {
00085                 ::std::ofstream f(filename.c_str());
00086                 if (flat_dump)
00087 			::lestes::std::dumper::dump( f, as_result );
00088                 else
00089 			::lestes::std::readable_dumper::dump( f, as_result );
00090                 f.close();
00091         }
00092 
00093         if (ss_filename != "") {
00094                 ::std::ofstream f(ss_filename.c_str());
00095                 if (flat_dump)
00096 			::lestes::std::dumper::dump(f, sem::ss_decl_seq::root_instance());
00097                 else
00098 			::lestes::std::readable_dumper::dump(f, sem::ss_decl_seq::root_instance());
00099                 f.close();
00100         }
00101 
00102         ss2pi_start(ss_translation_unit::create(ss_decl_seq::root_instance()));
00103         lestes::backend::backend::create(::std::cout)->main();
00104         return success ? 0 : 1;
00105 }

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::syn::empty_condition ( ::lestes::msg::message_stencil0< bool >::  create("syntax error: empty condition not allowed here",::lestes::msg::message::FLG_ERROR)  ) 

static lstring lestes::lang::cplus::syn::hint2str ( bison_token::hint_type  hint  )  [static]

Definition at line 42 of file token.cc.

Referenced by lestes::lang::cplus::syn::bison_token::field_values_get(), and lestes::lang::cplus::syn::bison_token::print().

00043 {
00044         lstring str = "BUG!";
00045         switch (hint) {
00046         case bison_token::HINT_NONE:
00047                 str = "HINT_NONE";
00048                 break;
00049 
00050         case bison_token::HINT_TEMPL_NONTYPE:
00051                 str = "HINT_TEMPL_NONTYPE";
00052                 break;
00053         case bison_token::HINT_TEMPL_TYPE:
00054                 str = "HINT_TEMPL_TYPE";
00055                 break;
00056         case bison_token::HINT_NONTYPE:
00057                 str = "HINT_NONTYPE";
00058                 break;
00059         case bison_token::HINT_CLASS:
00060                 str = "HINT_CLASS";
00061                 break;
00062         case bison_token::HINT_ENUM:
00063                 str = "HINT_ENUM";
00064                 break;
00065         case bison_token::HINT_TYPEDEF:
00066                 str = "HINT_TYPEDEF";
00067                 break;
00068         case bison_token::HINT_NAMESPACE:
00069                 str = "HINT_NAMESPACE";
00070                 break;
00071         case bison_token::HINT_UNKNOWN:
00072                 str = "HINT_UNKNOWN";
00073                 break;
00074 
00075         case bison_token::HINT_CTOR:
00076                 str = "HINT_CTOR";
00077                 break;
00078         case bison_token::HINT_NO_CTOR:
00079                 str = "HINT_NO_CTOR";
00080                 break;
00081 
00082         case bison_token::HINT_BITFIELD:
00083                 str = "HINT_BITFIELD";
00084                 break;
00085         case bison_token::HINT_NO_BITFIELD:
00086                 str = "HINT_NO_BITFIELD";
00087                 break;
00088         }
00089         return str;
00090 }

static lstring lestes::lang::cplus::syn::hinted_by2str ( bison_id_token::hinted_by_type  hb  )  [static]

Definition at line 92 of file token.cc.

Referenced by lestes::lang::cplus::syn::bison_id_token::field_values_get(), and lestes::lang::cplus::syn::bison_id_token::print().

00093 {
00094         lstring str = "BUG!";
00095         switch (hb) {
00096         case bison_id_token::BY_HINTER:
00097                 str = "BY_HINTER";
00098                 break;
00099 //      case bison_id_token::BY_BOTH:
00100 //              str = "BY_BOTH";
00101 //              break;
00102         case bison_id_token::BY_USER:
00103                 str = "BY_USER";
00104                 break;
00105         }
00106         return str;
00107 }

lestes::lang::cplus::syn::initialize_event ( manager::rollback_event   ) 

lestes::lang::cplus::syn::initialize_event ( manager::commit_event   ) 

lestes::lang::cplus::syn::initialize_event ( manager::start_event   ) 

lestes::lang::cplus::syn::initialize_event ( manager::close_event   ) 

lestes::lang::cplus::syn::initialize_event ( manager::spawn_event   ) 

lestes::lang::cplus::syn::initialize_logger ( syn_logger  ,
"syn"  ,
cplus_logger   
)

lestes::lang::cplus::syn::initialize_logger ( prl  ,
"prefixer"  ,
syn_logger   
)

lestes::lang::cplus::syn::initialize_logger ( pl  ,
"parser"  ,
syn_logger   
)

lestes::lang::cplus::syn::initialize_logger ( ml  ,
"manager"  ,
syn_logger   
)

lestes::lang::cplus::syn::initialize_logger ( hl  ,
"hinter"  ,
syn_logger   
)

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::syn::invalid_cond ( ::lestes::msg::message_stencil0< bool >::  create("syntax error: error in condition",::lestes::msg::message::FLG_ERROR)  ) 

static ptr<declaration_set_type> lestes::lang::cplus::syn::look_first ( const ptr< ss_decl_name > &  name,
const ptr< ss_decl_seq > &  seq 
) [static]

Definition at line 355 of file hinter.cc.

Referenced by lestes::lang::cplus::syn::hinter::compute_hint().

00356 {
00357         static ptr<lu_params> params;
00358         static ptr<lu_name_filter> name_filter;
00359         static ptr<lu_visible_filter> visible_filter;
00360         if (!params) {
00361                 ptr<lu_multi_filter> big_filter = lu_multi_filter::create();
00362                 // XXX: really UDIR_ALWAYS ???
00363                 params = lu_params::create( lu_params::UDIR_ALWAYS,
00364                                 lu_params::UDECL_RESOLVE_BEFORE_FILTER,
00365                                 lu_params::SEARCH_PARENTS,
00366                                 ss_declaration_time::infinity(), big_filter );
00367                 name_filter = lu_name_filter::create( name );
00368                 big_filter->add_filter( name_filter );
00369                 big_filter->add_filter( lu_qual_filter::instance() );
00370                 visible_filter = lu_visible_filter::create( ss_declaration_time::infinity() );
00371                 big_filter->add_filter( visible_filter );
00372         }
00373         // the location -> time translation should be made easier...
00374         ptr<ss_declaration_time> time = ss_declaration_time::create( name->location_get()->order_get() );
00375         params->time_set( time );
00376         visible_filter->visible_before_set( time );
00377         name_filter->name_set( name );
00378         return lu_lookup::instance()->main( seq, params );
00379 }

static ptr<declaration_set_type> lestes::lang::cplus::syn::look_last ( const ptr< ss_decl_name > &  name,
const ptr< ss_decl_seq > &  seq 
) [static]

Definition at line 381 of file hinter.cc.

Referenced by lestes::lang::cplus::syn::hinter::compute_hint().

00382 {
00383         static ptr<lu_params> params;
00384         static ptr<lu_name_filter> name_filter;
00385         static ptr<lu_visible_filter> visible_filter;
00386         if (!params) {
00387                 ptr<lu_multi_filter> big_filter = lu_multi_filter::create();
00388                 params = lu_params::create( lu_params::UDIR_FALLBACK,
00389                                 lu_params::UDECL_RESOLVE_BEFORE_FILTER,
00390                                 lu_params::SKIP_PARENTS,
00391                                 ss_declaration_time::infinity(), big_filter );
00392                 name_filter = lu_name_filter::create( name );
00393                 big_filter->add_filter( name_filter );
00394                 big_filter->add_filter( lu_func_cont_filter::instance() );
00395                 visible_filter = lu_visible_filter::create( ss_declaration_time::infinity() );
00396                 big_filter->add_filter( visible_filter );
00397         }
00398         // the location -> time translation should be made easier...
00399         ptr<ss_declaration_time> time = ss_declaration_time::create( name->location_get()->order_get() );
00400         params->time_set( time );
00401         visible_filter->visible_before_set( time );
00402         name_filter->name_set( name );
00403         return lu_lookup::instance()->main( seq, params );
00404 }

static ptr<declaration_set_type> lestes::lang::cplus::syn::look_last_elab ( const ptr< ss_decl_name > &  name,
const ptr< ss_decl_seq > &  seq 
) [static]

Definition at line 406 of file hinter.cc.

Referenced by lestes::lang::cplus::syn::hinter::compute_hint().

00407 {
00408         static ptr<lu_params> params;
00409         static ptr<lu_name_filter> name_filter;
00410         static ptr<lu_visible_filter> visible_filter;
00411         if (!params) {
00412                 ptr<lu_multi_filter> big_filter = lu_multi_filter::create();
00413                 params = lu_params::create( lu_params::UDIR_FALLBACK,
00414                                 lu_params::UDECL_RESOLVE_BEFORE_FILTER,
00415                                 lu_params::SKIP_PARENTS,
00416                                 ss_declaration_time::infinity(), big_filter );
00417                 name_filter = lu_name_filter::create( name );
00418                 big_filter->add_filter( name_filter );
00419                 big_filter->add_filter( lu_elaborated_filter::instance() );
00420                 visible_filter = lu_visible_filter::create( ss_declaration_time::infinity() );
00421                 // we _want_ to see invisible classes in elaborated type specifiers
00422                 // big_filter->add_filter( visible_filter );
00423         }
00424         // the location -> time translation should be made easier...
00425         ptr<ss_declaration_time> time = ss_declaration_time::create( name->location_get()->order_get() );
00426         params->time_set( time );
00427         visible_filter->visible_before_set( time );
00428         name_filter->name_set( name );
00429         return lu_lookup::instance()->main( seq, params );
00430 }

static ptr<declaration_set_type> lestes::lang::cplus::syn::middle ( const ptr< ss_decl_name > &  name,
const ptr< ss_decl_seq > &  seq 
) [static]

Definition at line 432 of file hinter.cc.

Referenced by lestes::lang::cplus::syn::hinter::compute_hint().

00433 {
00434         static ptr<lu_params> params;
00435         static ptr<lu_name_filter> name_filter;
00436         static ptr<lu_visible_filter> visible_filter;
00437         if (!params) {
00438                 ptr<lu_multi_filter> big_filter = lu_multi_filter::create();
00439                 params = lu_params::create( lu_params::UDIR_FALLBACK,
00440                                 lu_params::UDECL_RESOLVE_BEFORE_FILTER,
00441                                 lu_params::SKIP_PARENTS,
00442                                 ss_declaration_time::infinity(), big_filter );
00443                 name_filter = lu_name_filter::create( name );
00444                 big_filter->add_filter( name_filter );
00445                 big_filter->add_filter( lu_qual_filter::instance() );
00446                 visible_filter = lu_visible_filter::create( ss_declaration_time::infinity() );
00447                 big_filter->add_filter( visible_filter );
00448         }
00449         // the location -> time translation should be made easier...
00450         ptr<ss_declaration_time> time = ss_declaration_time::create( name->location_get()->order_get() );
00451         params->time_set( time );
00452         visible_filter->visible_before_set( time );
00453         name_filter->name_set( name );
00454         return lu_lookup::instance()->main( seq, params );
00455 }

static ptr<declaration_set_type> lestes::lang::cplus::syn::nmspace ( const ptr< ss_decl_name > &  name,
const ptr< ss_decl_seq > &  seq 
) [static]

Definition at line 457 of file hinter.cc.

Referenced by lestes::lang::cplus::syn::hinter::compute_hint().

00458 {
00459         static ptr<lu_params> params;
00460         static ptr<lu_name_filter> name_filter;
00461         if (!params) {
00462                 ptr<lu_multi_filter> big_filter = lu_multi_filter::create();
00463                 params = lu_params::create( lu_params::UDIR_IGNORE,
00464                                 lu_params::UDECL_RESOLVE_BEFORE_FILTER,
00465                                 lu_params::SKIP_PARENTS,
00466                                 ss_declaration_time::infinity(), big_filter );
00467                 name_filter = lu_name_filter::create( name );
00468                 big_filter->add_filter( name_filter );
00469 // deliberately commented out:
00470 //              big_filter->add_filter( lu_namespace_filter::instance() );
00471         }
00472         // the location -> time translation should be made easier...
00473         ptr<ss_declaration_time> time = ss_declaration_time::create( name->location_get()->order_get() );
00474         params->time_set( time );
00475         name_filter->name_set( name );
00476         return lu_lookup::instance()->main( seq, params );
00477 }

std::ostream & lestes::lang::cplus::syn::operator<< ( ::std::ostream &  os,
const ptr< bison_token > &  bt 
)

Definition at line 109 of file token.cc.

00110 {
00111         bt->print( os );
00112         return os;
00113 }

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::syn::or_here ( ::lestes::msg::message_stencil0< bool >::  create(" possibly here",::lestes::msg::message::FLG_ERROR)  ) 

ptr< ::lestes::msg::message_stencil1< lstring > > lestes::lang::cplus::syn::parse_error ( ::lestes::msg::message_stencil1< lstring >::  create("%0",::lestes::msg::message::FLG_ERROR,::lestes::msg::formatter< lstring >::instance())  ) 

Referenced by yyerror().

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::syn::sub_error ( ::lestes::msg::message_stencil0< bool >::  create(" sub-error here",::lestes::msg::message::FLG_ERROR)  ) 

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::syn::unknown_before_coloncolon ( ::lestes::msg::message_stencil0< bool >::  create("unknown name followed by ::",::lestes::msg::message::FLG_ERROR)  ) 

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::syn::unmatched_open ( ::lestes::msg::message_stencil0< bool >::  create("syntax error: unmatched opening",::lestes::msg::message::FLG_ERROR)  ) 

static ptr<declaration_set_type> lestes::lang::cplus::syn::unqualified ( const ptr< ss_decl_name > &  name,
const ptr< ss_decl_seq > &  seq 
) [static]

Definition at line 305 of file hinter.cc.

Referenced by lestes::lang::cplus::syn::hinter::compute_hint().

00306 {
00307         static ptr<lu_params> params;
00308         static ptr<lu_name_filter> name_filter;
00309         static ptr<lu_visible_filter> visible_filter;
00310         if (!params) {
00311                 ptr<lu_multi_filter> big_filter = lu_multi_filter::create();
00312                 params = lu_params::create( lu_params::UDIR_ALWAYS,
00313                                 lu_params::UDECL_RESOLVE_BEFORE_FILTER,
00314                                 lu_params::SEARCH_PARENTS,
00315                                 ss_declaration_time::infinity(), big_filter );
00316                 name_filter = lu_name_filter::create( name );
00317                 big_filter->add_filter( name_filter );
00318                 big_filter->add_filter( lu_func_cont_filter::instance() );
00319                 visible_filter = lu_visible_filter::create( ss_declaration_time::infinity() );
00320                 big_filter->add_filter( visible_filter );
00321         }
00322         // the location -> time translation should be made easier...
00323         ptr<ss_declaration_time> time = ss_declaration_time::create( name->location_get()->order_get() );
00324         params->time_set( time );
00325         visible_filter->visible_before_set( time );
00326         name_filter->name_set( name );
00327         return lu_lookup::instance()->main( seq, params );
00328 }

static ptr<declaration_set_type> lestes::lang::cplus::syn::unqualified_elab ( const ptr< ss_decl_name > &  name,
const ptr< ss_decl_seq > &  seq 
) [static]

Definition at line 330 of file hinter.cc.

Referenced by lestes::lang::cplus::syn::hinter::compute_hint().

00331 {
00332         static ptr<lu_params> params;
00333         static ptr<lu_name_filter> name_filter;
00334         static ptr<lu_visible_filter> visible_filter;
00335         if (!params) {
00336                 ptr<lu_multi_filter> big_filter = lu_multi_filter::create();
00337                 params = lu_params::create( lu_params::UDIR_ALWAYS,
00338                                 lu_params::UDECL_RESOLVE_BEFORE_FILTER,
00339                                 lu_params::SEARCH_PARENTS,
00340                                 ss_declaration_time::infinity(), big_filter );
00341                 name_filter = lu_name_filter::create( name );
00342                 big_filter->add_filter( name_filter );
00343                 big_filter->add_filter( lu_elaborated_filter::instance() );
00344                 visible_filter = lu_visible_filter::create( ss_declaration_time::infinity() );
00345                 big_filter->add_filter( visible_filter );
00346         }
00347         // the location -> time translation should be made easier...
00348         ptr<ss_declaration_time> time = ss_declaration_time::create( name->location_get()->order_get() );
00349         params->time_set( time );
00350         visible_filter->visible_before_set( time );
00351         name_filter->name_set( name );
00352         return lu_lookup::instance()->main( seq, params );
00353 }

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::syn::wrong_before_coloncolon ( ::lestes::msg::message_stencil0< bool >::  create("name followed by :: is not a class, nor a namespace name",::lestes::msg::message::FLG_ERROR)  ) 

static void lestes::lang::cplus::syn::yyerror ( ptr< as_base > &  ,
const char *  str 
) [static]

Definition at line 84 of file parser.cc.

References bad_end(), llog, parse_error(), lestes::report(), and TOK_EOF.

00085 {
00086         llog(pl) << "yyerror: " << str << "\n";
00087         // do not report errors when trying to resolve an ambiguity
00088         // nor when we are expecting more errors to follow (we are failing)
00089         if (!manager::in_disambiguation() && !manager::failing_get()) {
00090                 ptr<bison_token> prev = manager::prev_yylex();
00091                 // supress confusing message about TOK_EOF -- it might be end
00092                 //   of a function body just as well
00093                 if (prev->type_get() == bison_token::TOK_EOF)
00094                         report << bad_end << prev->location_get();
00095                 else
00096                         report << parse_error << lstring(str) << prev->location_get();
00097         }
00098 }

static int lestes::lang::cplus::syn::yylex ( semval *  sv  )  [static]

Definition at line 75 of file parser.cc.

References llog, lestes::lang::cplus::syn::semval::select(), and lestes::ui::yylex().

00076 {
00077         ptr<bison_token> t = manager::yylex();
00078         llog(pl) << "yylex: " << t << "\n";
00079         sv->select<bison_token>() = t;
00080         return t->type_get();
00081 }


Variable Documentation

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::syn::bad_end

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::syn::bad_global_qual

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::syn::cont_here

Referenced by lestes::lang::cplus::syn::syntax_error::disa_stmt().

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::syn::disa_failed

Referenced by lestes::lang::cplus::syn::syntax_error::disa_stmt().

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::syn::empty_condition

Referenced by lestes::lang::cplus::syn::syntax_error::condition().

ptr<hinter_stack_type> lestes::lang::cplus::syn::hinter_stack [static]

Definition at line 224 of file hinter.cc.

Referenced by lestes::lang::cplus::syn::hinter::elab_spec_get(), lestes::lang::cplus::syn::hinter::elab_spec_set(), lestes::lang::cplus::syn::hinter::init(), lestes::lang::cplus::syn::hinter::namespace_mode_get(), lestes::lang::cplus::syn::hinter::namespace_mode_set(), lestes::lang::cplus::syn::hinter::qual_scope_get(), lestes::lang::cplus::syn::pop_state_action::run(), lestes::lang::cplus::syn::push_state_action::run(), lestes::lang::cplus::syn::close_hinter_action::run(), and lestes::lang::cplus::syn::spawn_hinter_action::run().

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::syn::invalid_cond

Referenced by lestes::lang::cplus::syn::syntax_error::condition().

ptr<mgr_stack_type> lestes::lang::cplus::syn::mgr_stack [static]

Definition at line 599 of file manager.cc.

Referenced by lestes::lang::cplus::syn::manager::back_up(), lestes::lang::cplus::syn::manager::close(), lestes::lang::cplus::syn::manager::commit(), lestes::lang::cplus::syn::manager::failing_get(), lestes::lang::cplus::syn::manager::failing_set_true(), lestes::lang::cplus::syn::manager::in_disambiguation(), lestes::lang::cplus::syn::manager::init(), lestes::lang::cplus::syn::manager::install_undo_action(), lestes::lang::cplus::syn::manager::pack(), lestes::lang::cplus::syn::manager::peek(), lestes::lang::cplus::syn::manager::prev_yylex(), lestes::lang::cplus::syn::manager::rollback(), lestes::lang::cplus::syn::manager::spawn(), lestes::lang::cplus::syn::manager::start(), lestes::lang::cplus::syn::manager::unpack(), and lestes::lang::cplus::syn::manager::yylex().

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::syn::or_here

Referenced by lestes::lang::cplus::syn::syntax_error::condition(), and lestes::lang::cplus::syn::syntax_error::disa_stmt().

ptr< ::lestes::msg::message_stencil1< lstring > > lestes::lang::cplus::syn::parse_error

struct lestes::lang::cplus::syn::prefix2hint_map_item lestes::lang::cplus::syn::prefix2hint_map[] [static]

Referenced by lestes::lang::cplus::syn::prefixer::prefix2hint().

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::syn::sub_error

Referenced by lestes::lang::cplus::syn::syntax_error::disa_stmt().

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::syn::unknown_before_coloncolon

Referenced by lestes::lang::cplus::syn::hinter::compute_hint().

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::syn::unmatched_open

Referenced by lestes::lang::cplus::syn::one_manager::find_closing().

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::syn::wrong_before_coloncolon

Referenced by lestes::lang::cplus::syn::hinter::compute_hint().


Generated on Mon Feb 12 18:25:37 2007 for lestes by doxygen 1.5.1-20070107