#include <token.hh>
Inheritance diagram for lestes::lang::cplus::syn::bison_token:

Public Types | |
| enum | hint_type { HINT_NONE, HINT_TEMPL_NONTYPE, HINT_TEMPL_TYPE, HINT_NONTYPE, HINT_CLASS, HINT_ENUM, HINT_TYPEDEF, HINT_NAMESPACE, HINT_UNKNOWN, HINT_CTOR, HINT_NO_CTOR, HINT_BITFIELD, HINT_NO_BITFIELD } |
| typedef ::lestes::lang::cplus::lex::cpp_token | wrapped_token_type |
Public Member Functions | |
| int | type_get () const |
| virtual ucn_string | value_get () const |
| virtual ptr< wrapped_token_type > | wrapped_token_get () const |
| void | user_hint_set (hint_type hint) |
| hint_type | user_hint_get () const |
| virtual void | print (::std::ostream &) const |
| virtual ptr< reflection_list > | reflection_get () const |
| for purposes of dumping | |
| virtual ptr< field_list_list > | field_values_get () const |
| for purposes of dumping | |
Static Public Member Functions | |
| static ptr< bison_token > | create (ptr< wrapped_token_type > a_token_to_wrap) |
Protected Member Functions | |
| bison_token (const ptr< source_location > &a_location, int a_type, const ptr< wrapped_token_type > &a_token_to_wrap) | |
| void | gc_mark () |
| Marking routine for class as_base. | |
Protected Attributes | |
| const srp< wrapped_token_type > | wrapped_token |
| pointer to token read from lex | |
Private Attributes | |
| const int | type |
| type of the token; this is what bison cares about | |
| hint_type | user_hint |
Static Private Attributes | |
| static ptr< reflection_list > | reflection = reflection |
Definition at line 47 of file token.hh.
| HINT_NONE | |
| HINT_TEMPL_NONTYPE | |
| HINT_TEMPL_TYPE | |
| HINT_NONTYPE | |
| HINT_CLASS | |
| HINT_ENUM | |
| HINT_TYPEDEF | |
| HINT_NAMESPACE | |
| HINT_UNKNOWN | |
| HINT_CTOR | |
| HINT_NO_CTOR | |
| HINT_BITFIELD | |
| HINT_NO_BITFIELD |
Definition at line 52 of file token.hh.
00052 { 00053 HINT_NONE, 00054 00055 HINT_TEMPL_NONTYPE, 00056 HINT_TEMPL_TYPE, 00057 HINT_NONTYPE, 00058 HINT_CLASS, 00059 HINT_ENUM, 00060 HINT_TYPEDEF, 00061 HINT_NAMESPACE, 00062 HINT_UNKNOWN, 00063 00064 HINT_CTOR, 00065 HINT_NO_CTOR, 00066 00067 HINT_BITFIELD, 00068 HINT_NO_BITFIELD, 00069 };
| lestes::lang::cplus::syn::bison_token::bison_token | ( | const ptr< source_location > & | a_location, | |
| int | a_type, | |||
| const ptr< wrapped_token_type > & | a_token_to_wrap | |||
| ) | [inline, protected] |
| void lestes::lang::cplus::syn::bison_token::gc_mark | ( | void | ) | [protected, virtual] |
Marking routine for class as_base.
Marking routine is used for garbage collection.
Reimplemented from lestes::intercode::as_base.
Reimplemented in lestes::lang::cplus::syn::bison_id_token, and lestes::lang::cplus::syn::bison_pack_token.
Definition at line 115 of file token.cc.
References wrapped_token.
Referenced by lestes::lang::cplus::syn::bison_pack_token::gc_mark(), and lestes::lang::cplus::syn::bison_id_token::gc_mark().
00116 { 00117 wrapped_token.gc_mark(); 00118 as_base::gc_mark(); 00119 }
| static ptr<bison_token> lestes::lang::cplus::syn::bison_token::create | ( | ptr< wrapped_token_type > | a_token_to_wrap | ) | [inline, static] |
Definition at line 92 of file token.hh.
References checked.
00093 { 00094 // we check the value here, not in the constructor 00095 // this allows derived classes to set wrapped_token to NULL 00096 return new bison_token( a_token_to_wrap->location_get(), 00097 a_token_to_wrap->type_get(), 00098 checked(a_token_to_wrap) ); 00099 }
| int lestes::lang::cplus::syn::bison_token::type_get | ( | void | ) | const [inline] |
Definition at line 100 of file token.hh.
Referenced by lestes::lang::cplus::syn::bison_pack_token::print(), lestes::lang::cplus::syn::bison_id_token::print(), and lestes::lang::cplus::syn::bison_madeup_token::print().
00101 { 00102 return type; 00103 }
| virtual ucn_string lestes::lang::cplus::syn::bison_token::value_get | ( | void | ) | const [inline, virtual] |
Reimplemented in lestes::lang::cplus::syn::bison_madeup_token.
Definition at line 104 of file token.hh.
References checked.
Referenced by lestes::lang::cplus::syn::bison_id_token::print(), and print().
00105 { 00106 return checked(wrapped_token)->value_get()->content_get(); 00107 }
| virtual ptr<wrapped_token_type> lestes::lang::cplus::syn::bison_token::wrapped_token_get | ( | ) | const [inline, virtual] |
Reimplemented in lestes::lang::cplus::syn::bison_madeup_token.
Definition at line 108 of file token.hh.
References checked.
00109 { 00110 return checked(wrapped_token); 00111 }
| void lestes::lang::cplus::syn::bison_token::user_hint_set | ( | hint_type | hint | ) | [inline] |
| hint_type lestes::lang::cplus::syn::bison_token::user_hint_get | ( | ) | const [inline] |
Definition at line 118 of file token.hh.
Referenced by lestes::lang::cplus::syn::bison_pack_token::print(), lestes::lang::cplus::syn::bison_id_token::print(), and lestes::lang::cplus::syn::bison_madeup_token::print().
00119 { 00120 return user_hint; 00121 }
| void lestes::lang::cplus::syn::bison_token::print | ( | ::std::ostream & | ) | const [virtual] |
Reimplemented in lestes::lang::cplus::syn::bison_madeup_token, lestes::lang::cplus::syn::bison_id_token, and lestes::lang::cplus::syn::bison_pack_token.
Definition at line 151 of file token.cc.
References lestes::lang::cplus::syn::hint2str(), HINT_NONE, TOK_IDENT, TOK_LITERAL, lestes::lang::cplus::syn::parser::token_type2name(), type, user_hint, and value_get().
00152 { 00153 os << "bison_token " << parser::token_type2name(type); 00154 if (type == TOK_IDENT || type == TOK_LITERAL) 00155 os << " (\"" << value_get() << "\")"; 00156 if (user_hint != HINT_NONE) 00157 os << ", user " << hint2str(user_hint); 00158 }
| ptr< object::reflection_list > lestes::lang::cplus::syn::bison_token::reflection_get | ( | ) | const [virtual] |
for purposes of dumping
Reimplemented from lestes::intercode::as_base.
Reimplemented in lestes::lang::cplus::syn::bison_madeup_token, lestes::lang::cplus::syn::bison_id_token, and lestes::lang::cplus::syn::bison_pack_token.
Definition at line 123 of file token.cc.
References lestes::std::list< T >::create(), and reflection.
Referenced by lestes::lang::cplus::syn::bison_id_token::reflection_get(), and lestes::lang::cplus::syn::bison_madeup_token::reflection_get().
00124 { 00125 if (!reflection) { 00126 typedef class_reflection::field_metadata md; 00127 typedef class_reflection::field_metadata_list mdlist; 00128 ptr<mdlist> mdl = mdlist::create(); 00129 mdl->push_back( md::create( "type", "lstring" ) ); 00130 mdl->push_back( md::create( "wrapped_token", "cpp_token" ) ); 00131 mdl->push_back( md::create( "user_hint", "lstring" ) ); 00132 // append our one to a copy of the base class's list 00133 reflection = reflection_list::create( as_base::reflection_get() ); 00134 reflection->push_back( class_reflection::create( "bison_token", mdl ) ); 00135 } 00136 return reflection; 00137 }
| ptr< object::field_list_list > lestes::lang::cplus::syn::bison_token::field_values_get | ( | ) | const [virtual] |
for purposes of dumping
Reimplemented from lestes::intercode::as_base.
Reimplemented in lestes::lang::cplus::syn::bison_madeup_token, lestes::lang::cplus::syn::bison_id_token, and lestes::lang::cplus::syn::bison_pack_token.
Definition at line 139 of file token.cc.
References lestes::std::list< T >::create(), lestes::lang::cplus::syn::hint2str(), lestes::lang::cplus::syn::parser::token_type2name(), type, user_hint, and wrapped_token.
Referenced by lestes::lang::cplus::syn::bison_id_token::field_values_get(), and lestes::lang::cplus::syn::bison_madeup_token::field_values_get().
00140 { 00141 ptr<field_list_list> result = as_base::field_values_get(); 00142 result->push_back( value_list::create() ); 00143 result->back()->push_back( objectize<lstring>::create( parser::token_type2name(type) ) ); 00144 result->push_back( value_list::create() ); 00145 result->back()->push_back( wrapped_token ); 00146 result->push_back( value_list::create() ); 00147 result->back()->push_back( objectize<lstring>::create( hint2str(user_hint) ) ); 00148 return result; 00149 }
const int lestes::lang::cplus::syn::bison_token::type [private] |
type of the token; this is what bison cares about
Definition at line 72 of file token.hh.
Referenced by field_values_get(), and print().
const srp<wrapped_token_type> lestes::lang::cplus::syn::bison_token::wrapped_token [protected] |
pointer to token read from lex
Must not be NULL when the real type is bison_token. In other words, derived classes are allowed to set it to NULL. All the methods that use the value are virtual and the implementations in this class (bison_token, that is) always check the value.
Definition at line 81 of file token.hh.
Referenced by field_values_get(), and gc_mark().
ptr< object::reflection_list > lestes::lang::cplus::syn::bison_token::reflection = reflection [static, private] |
Reimplemented from lestes::intercode::as_base.
Reimplemented in lestes::lang::cplus::syn::bison_madeup_token, lestes::lang::cplus::syn::bison_id_token, and lestes::lang::cplus::syn::bison_pack_token.
Definition at line 125 of file token.hh.
Referenced by reflection_get().
1.5.1-20070107