lestes::lang::cplus::syn::bison_token Class Reference

#include <token.hh>

Inheritance diagram for lestes::lang::cplus::syn::bison_token:

lestes::intercode::as_base lestes::intercode::intercode lestes::std::object lestes::std::mem::keystone lestes::lang::cplus::syn::bison_id_token lestes::lang::cplus::syn::bison_madeup_token lestes::lang::cplus::syn::bison_pack_token List of all members.

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_typewrapped_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_listreflection_get () const
 for purposes of dumping
virtual ptr< field_list_listfield_values_get () const
 for purposes of dumping

Static Public Member Functions

static ptr< bison_tokencreate (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_typewrapped_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_listreflection = reflection

Detailed Description

Definition at line 47 of file token.hh.


Member Typedef Documentation

typedef ::lestes::lang::cplus::lex::cpp_token lestes::lang::cplus::syn::bison_token::wrapped_token_type

Definition at line 51 of file token.hh.


Member Enumeration Documentation

enum lestes::lang::cplus::syn::bison_token::hint_type

Enumerator:
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         };


Constructor & Destructor Documentation

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]

Definition at line 85 of file token.hh.

00086                                                                           :
00087                 as_base(a_location), type(a_type),
00088                 wrapped_token(a_token_to_wrap), user_hint(HINT_NONE)
00089         {}
        void gc_mark();


Member Function Documentation

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.

Author:
lsg

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]

Definition at line 112 of file token.hh.

References lassert2.

00113         {
00114                 lassert2( hint != HINT_NONE, "Trying to set user hint to NONE." );
00115                 lassert2( user_hint == HINT_NONE, "User hint already set." );
00116                 user_hint = hint;
00117         }

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 }


Member Data Documentation

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().

hint_type lestes::lang::cplus::syn::bison_token::user_hint [private]

Definition at line 83 of file token.hh.

Referenced by field_values_get(), and print().

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().


The documentation for this class was generated from the following files:
Generated on Mon Feb 12 18:25:38 2007 for lestes by doxygen 1.5.1-20070107