Puma Reference Manual Puma: Puma::CCSemantic Class Reference



Puma::CCSemantic Class Reference

#include <CCSemantic.h>

Inheritance diagram for Puma::CCSemantic:

Inheritance graph

List of all members.

Public Member Functions

 CCSemantic (CCSyntax &, CCBuilder &)
void init (CSemDatabase &, Unit &)
 Initialize the semantic analysis.
void init (CSemDatabase &, Unit &, CStructure *, bool, bool, CCInstantiation *)
virtual CTreeaccess_spec ()
virtual CTreetypedef_name ()
virtual CTreeclass_name ()
virtual CTreeenum_name ()
virtual CTreecondition ()
virtual CTreecolon_colon ()
virtual CTreedecl_spec_seq1 ()
virtual CTreenested_name_spec ()
virtual CTreenested_name_spec1 ()
virtual CTreepostfix_expr1 ()
virtual CTreepostfix_expr2 ()
virtual CTreepseudo_dtor_name ()
virtual CTreesimple_type_spec ()
virtual CTreedirect_new_declarator ()
virtual CTreeclass_spec_err ()
virtual CTreemember_decl1 ()
virtual CTreemember_declarator_err ()
virtual CTreedeclarator_id (bool)
virtual CTreefinish_init_declarator ()
virtual CTreeobj_decl (CTree *)
virtual bool implicit_int ()
virtual CTreeinit_declarator (CTree *)
virtual CTreeconst_expr ()
virtual CTreeenumerator_def ()
virtual CTreepure_spec ()
virtual CTreeconst_init ()
virtual CTreetemplate_param ()
virtual CTreeclass_spec ()
virtual CTreector_init ()
virtual CTreehandler ()
virtual CTreeexception_spec ()
virtual CTreeintroduce_orig_ns ()
virtual CTreeintroduce_ns_extension ()
virtual CTreeintroduce_unnamed_ns ()
virtual CTreeintroduce_ns_alias ()
virtual CTreenamespace_def (CTree *)
virtual CTreenamespace_def_err (CTree *)
virtual CTreeoriginal_ns_name ()
virtual CTreenamespace_alias ()
virtual CTreeusing_directive ()
virtual CTreeusing_decl ()
virtual CTreeaccess_decl (CTree *=0)
virtual CTreeintroduce_type_param ()
virtual CTreeintroduce_non_type_param ()
virtual CTreeintroduce_template_instance ()
virtual CTreetemplate_param_list ()
virtual CTreetemplate_decl ()
virtual CTreetemplate_name (bool class_only=false)
virtual CTreetemplate_key ()
virtual CTreeexplicit_instantiation ()
virtual CTreeexplicit_specialization ()
virtual CTreeintroduce_label ()
virtual CTreeintroduce_enum ()
virtual CTreeintroduce_enumerator ()
virtual CTreeintroduce_object ()
virtual CTreeintroduce_named_type ()
virtual CTreeintroduce_function ()
virtual CTreeintroduce_parameter ()
virtual CTreeintroduce_class ()
virtual CTreeintroduce_member ()
virtual CTreeintroduce_tag ()
virtual CTreeintroduce_exception ()
void reenter_class_scope ()
void enter_param_decl_clause ()
 Enter a function parameter declaration clause.
void enter_template_param_list (Syntax::State)
void enter_base_spec ()
void enter_class_def ()
void enter_template_decl ()
void enter_member_access ()
void enter_postfix_expr ()
void enter_exception_spec ()
void enter_template_arg_list (Syntax::State)
void enter_conv_type_id ()
void enter_entity_name (bool v=true)
void enter_nested_name ()
bool enter_expr ()
void enter_extern_decl ()
void leave_param_decl_clause ()
 Leave a function parameter declaration clause.
void leave_template_param_list ()
void leave_base_spec ()
void leave_class_def ()
void leave_member_access ()
void leave_postfix_expr ()
void leave_exception_spec ()
void leave_template_arg_list ()
void leave_conv_type_id ()
void leave_entity_name ()
void leave_nested_name ()
bool leave_expr ()
void leave_extern_decl ()
bool in_base_spec () const
bool in_class_def () const
bool in_conv_type_id () const
bool in_nested_name () const
bool in_expr () const
bool in_extern_decl () const
bool is_entity_name () const
Syntax::State in_template_param_list () const
Syntax::State in_template_arg_list () const
virtual CProtection::Type protection () const
bool non_project_loc ()
bool non_primary_loc ()
bool skip_tpl_fct_bodies () const
bool reset_search_scope (bool=false)
CStructurearray_delim (CStructure *=0)
void postfix_expr (CTree *)
int lookup_rule ()
void add_rule (CTree *(CCSyntax::*)(), CTree *, void(CCSyntax::*)())
void parse_rules ()
void reject_rules ()
virtual void add_base_classes (CTree *)

Public Attributes

CStructuresearch_scope
CStructurelast_search_scope
CStructurelast_scope
bool dep_nested_name
const Tokentok
CStructurescope
bool nested
bool in_nested

Protected Member Functions

virtual CCBuilderbuilder () const
virtual CCSyntaxsyntax () const
virtual void Delete ()
 Delete the top item on the semantic stack.
void enter_scope (CStructure *)
 Enter the given scope.
void deleteContainer (int)
void setQualName (CObjectInfo *, CObjectInfo *) const
CStructuregetQualifiedScope (CStructure *scope) const
CTypeInforesolveExpr (CTree *, CTree *=(CTree *) 0) const
void calculateAddress (CTree *) const
bool isAddrExpr (CTree *) const
CObjectInfogetLastResolvedName (CT_SimpleName *) const
CStructuregetNameScope (CT_SimpleName *, bool=true) const
CStructuregetScope (CObjectInfo *obj) const
CStructuregetFriendScope (bool skip_tpl_scope=false) const
CStructuregetNonTplScope (bool consider_instance_scope=false) const
void qualifiedScopeName (CT_SimpleName *, std::ostringstream &) const
bool isQualName (CT_SimpleName *) const
bool realTypedef (CObjectInfo *) const
bool equalType (CTypeInfo *, CTypeInfo *, bool=true) const
void lookupName (const Token *, CStructure *, bool)
bool isClassOrEnum (CObjectInfo *) const
void introduceTemplate (CObjectInfo *, CTemplateInfo *)
void setTemplateScope (CCNameLookup &, CObjectInfo *, CTypeInfo *, CTemplateInfo *, bool)
bool isSpecialization (CTree *) const
void setSpecializationName (CTree *, CTemplateInfo *) const
bool matchArguments (CT_TemplateName *n1, CT_TemplateName *n2) const
CLinkage::Type determine_linkage (CSemDeclSpecs *, SemObjType, CObjectInfo *=(CObjectInfo *) 0) const
CStorage::Type determine_storage_class (CSemDeclSpecs *) const
void setLanguage (CObjectInfo *) const
void setProtection (CObjectInfo *) const
void linkFctDecls (CCNameLookup &, CObjectInfo *) const
void linkCtorDecls (CObjectInfo *) const
void declareNamespaceStd ()
void declareImplicitFcts ()
void declareSpecialMembers ()
CFunctionInfocreateMethod (const char *, CRecord *, CTypeInfo *)
bool isRefToClass (CTypeInfo *, CRecord *) const
bool isBaseClass (CClassInfo *, CClassInfo *) const
void addBaseClasses (CClassInfo *, CT_ClassDef *)
void addBaseClass (CClassInfo *, CT_BaseSpec *)
virtual bool check_function_lookup (CCNameLookup &, CStructure *, CSemDeclSpecs *, CCSemDeclarator &, CTree *, bool)
virtual bool check_member_lookup (CCNameLookup &, CStructure *, CSemDeclSpecs *, CCSemDeclarator &, CTree *, bool &, bool)
virtual bool check_object_lookup (CCNameLookup &, CStructure *, CSemDeclSpecs *, CCSemDeclarator &, CTree *, bool &, CObjectInfo *&)

Protected Attributes

Array< RuleInforules
Stack< bool > _in_base_spec
Stack< bool > _in_class_def
Stack< bool > _in_nested_name
Stack< bool > _in_conv_type_id
Stack< const char * > _in_extern_decl
Stack< CProtection::Type_protection
CCNameLookup shared_nl
struct {
   const Token *   tok
   CStructure *   scope
   bool   nested
   bool   in_nested
last_token_nl
Stack< Syntax::State_in_template_arg_list
Stack< Syntax::State_in_template_param_list
Stack< bool > parsing_entity_name
Stack< bool > _in_expr
Stack< CTree * > _postfix_expr
Stack< bool > _in_memb_access_expr
bool expect_template
bool parsing_fct_inst
bool parsing_class_inst
bool real_inst
CCInstantiationtpl_inst
Unit_last_unit
bool _last_body_skipped

Classes

struct  RuleInfo


Constructor & Destructor Documentation

Puma::CCSemantic::CCSemantic ( CCSyntax ,
CCBuilder  
)


Member Function Documentation

void Puma::CCSemantic::init ( CSemDatabase db,
Unit file 
) [virtual]

Initialize the semantic analysis.

Parameters:
db The semantic object database.
file The input file.

Reimplemented from Puma::CSemantic.

void Puma::CCSemantic::init ( CSemDatabase ,
Unit ,
CStructure ,
bool  ,
bool  ,
CCInstantiation  
)

CCBuilder & Puma::CCSemantic::builder (  )  const [inline, protected, virtual]

Reimplemented from Puma::CSemantic.

CCSyntax & Puma::CCSemantic::syntax (  )  const [inline, protected, virtual]

Reimplemented from Puma::CSemantic.

virtual void Puma::CCSemantic::Delete (  )  [protected, virtual]

Delete the top item on the semantic stack.

To be implemented by derived classes.

Reimplemented from Puma::CSemantic.

virtual CTree* Puma::CCSemantic::access_spec (  )  [virtual]

virtual CTree* Puma::CCSemantic::typedef_name (  )  [virtual]

Reimplemented from Puma::CSemantic.

virtual CTree* Puma::CCSemantic::class_name (  )  [virtual]

virtual CTree* Puma::CCSemantic::enum_name (  )  [virtual]

virtual CTree* Puma::CCSemantic::condition (  )  [virtual]

virtual CTree* Puma::CCSemantic::colon_colon (  )  [virtual]

virtual CTree* Puma::CCSemantic::decl_spec_seq1 (  )  [virtual]

Reimplemented from Puma::CSemantic.

virtual CTree* Puma::CCSemantic::nested_name_spec (  )  [virtual]

virtual CTree* Puma::CCSemantic::nested_name_spec1 (  )  [virtual]

virtual CTree* Puma::CCSemantic::postfix_expr1 (  )  [virtual]

virtual CTree* Puma::CCSemantic::postfix_expr2 (  )  [virtual]

virtual CTree* Puma::CCSemantic::pseudo_dtor_name (  )  [virtual]

virtual CTree* Puma::CCSemantic::simple_type_spec (  )  [virtual]

virtual CTree* Puma::CCSemantic::direct_new_declarator (  )  [virtual]

virtual CTree* Puma::CCSemantic::class_spec_err (  )  [virtual]

virtual CTree* Puma::CCSemantic::member_decl1 (  )  [virtual]

virtual CTree* Puma::CCSemantic::member_declarator_err (  )  [virtual]

virtual CTree* Puma::CCSemantic::declarator_id ( bool   )  [virtual]

virtual CTree* Puma::CCSemantic::finish_init_declarator (  )  [virtual]

virtual CTree* Puma::CCSemantic::obj_decl ( CTree  )  [virtual]

virtual bool Puma::CCSemantic::implicit_int (  )  [virtual]

Reimplemented from Puma::CSemantic.

virtual CTree* Puma::CCSemantic::init_declarator ( CTree  )  [virtual]

Reimplemented from Puma::CSemantic.

virtual CTree* Puma::CCSemantic::const_expr (  )  [virtual]

virtual CTree* Puma::CCSemantic::enumerator_def (  )  [virtual]

virtual CTree* Puma::CCSemantic::pure_spec (  )  [virtual]

virtual CTree* Puma::CCSemantic::const_init (  )  [virtual]

virtual CTree* Puma::CCSemantic::template_param (  )  [virtual]

virtual CTree* Puma::CCSemantic::class_spec (  )  [virtual]

Reimplemented from Puma::CSemantic.

virtual CTree* Puma::CCSemantic::ctor_init (  )  [virtual]

virtual CTree* Puma::CCSemantic::handler (  )  [virtual]

virtual CTree* Puma::CCSemantic::exception_spec (  )  [virtual]

virtual CTree* Puma::CCSemantic::introduce_orig_ns (  )  [virtual]

virtual CTree* Puma::CCSemantic::introduce_ns_extension (  )  [virtual]

virtual CTree* Puma::CCSemantic::introduce_unnamed_ns (  )  [virtual]

virtual CTree* Puma::CCSemantic::introduce_ns_alias (  )  [virtual]

virtual CTree* Puma::CCSemantic::namespace_def ( CTree  )  [virtual]

virtual CTree* Puma::CCSemantic::namespace_def_err ( CTree  )  [virtual]

virtual CTree* Puma::CCSemantic::original_ns_name (  )  [virtual]

virtual CTree* Puma::CCSemantic::namespace_alias (  )  [virtual]

virtual CTree* Puma::CCSemantic::using_directive (  )  [virtual]

virtual CTree* Puma::CCSemantic::using_decl (  )  [virtual]

virtual CTree* Puma::CCSemantic::access_decl ( CTree = 0  )  [virtual]

virtual CTree* Puma::CCSemantic::introduce_type_param (  )  [virtual]

virtual CTree* Puma::CCSemantic::introduce_non_type_param (  )  [virtual]

virtual CTree* Puma::CCSemantic::introduce_template_instance (  )  [virtual]

virtual CTree* Puma::CCSemantic::template_param_list (  )  [virtual]

virtual CTree* Puma::CCSemantic::template_decl (  )  [virtual]

virtual CTree* Puma::CCSemantic::template_name ( bool  class_only = false  )  [virtual]

virtual CTree* Puma::CCSemantic::template_key (  )  [virtual]

virtual CTree* Puma::CCSemantic::explicit_instantiation (  )  [virtual]

virtual CTree* Puma::CCSemantic::explicit_specialization (  )  [virtual]

virtual CTree* Puma::CCSemantic::introduce_label (  )  [virtual]

Reimplemented from Puma::CSemantic.

virtual CTree* Puma::CCSemantic::introduce_enum (  )  [virtual]

Reimplemented from Puma::CSemantic.

virtual CTree* Puma::CCSemantic::introduce_enumerator (  )  [virtual]

Reimplemented from Puma::CSemantic.

virtual CTree* Puma::CCSemantic::introduce_object (  )  [virtual]

Reimplemented from Puma::CSemantic.

virtual CTree* Puma::CCSemantic::introduce_named_type (  )  [virtual]

Reimplemented from Puma::CSemantic.

virtual CTree* Puma::CCSemantic::introduce_function (  )  [virtual]

Reimplemented from Puma::CSemantic.

virtual CTree* Puma::CCSemantic::introduce_parameter (  )  [virtual]

Reimplemented from Puma::CSemantic.

virtual CTree* Puma::CCSemantic::introduce_class (  )  [virtual]

Reimplemented from Puma::CSemantic.

virtual CTree* Puma::CCSemantic::introduce_member (  )  [virtual]

Reimplemented from Puma::CSemantic.

virtual CTree* Puma::CCSemantic::introduce_tag (  )  [virtual]

Reimplemented from Puma::CSemantic.

virtual CTree* Puma::CCSemantic::introduce_exception (  )  [virtual]

void Puma::CCSemantic::reenter_class_scope (  ) 

void Puma::CCSemantic::enter_param_decl_clause (  )  [virtual]

Enter a function parameter declaration clause.

Reimplemented from Puma::Semantic.

void Puma::CCSemantic::enter_template_param_list ( Syntax::State   ) 

void Puma::CCSemantic::enter_base_spec (  )  [inline]

void Puma::CCSemantic::enter_class_def (  )  [inline]

void Puma::CCSemantic::enter_template_decl (  ) 

void Puma::CCSemantic::enter_member_access (  )  [inline]

void Puma::CCSemantic::enter_postfix_expr (  )  [inline]

void Puma::CCSemantic::enter_exception_spec (  ) 

void Puma::CCSemantic::enter_template_arg_list ( Syntax::State  state  )  [inline]

void Puma::CCSemantic::enter_conv_type_id (  )  [inline]

void Puma::CCSemantic::enter_entity_name ( bool  v = true  )  [inline]

void Puma::CCSemantic::enter_nested_name (  )  [inline]

bool Puma::CCSemantic::enter_expr (  )  [inline]

void Puma::CCSemantic::enter_extern_decl (  ) 

void Puma::CCSemantic::leave_param_decl_clause (  )  [virtual]

Leave a function parameter declaration clause.

Reimplemented from Puma::Semantic.

void Puma::CCSemantic::leave_template_param_list (  )  [inline]

void Puma::CCSemantic::leave_base_spec (  )  [inline]

void Puma::CCSemantic::leave_class_def (  )  [inline]

void Puma::CCSemantic::leave_member_access (  )  [inline]

void Puma::CCSemantic::leave_postfix_expr (  )  [inline]

void Puma::CCSemantic::leave_exception_spec (  ) 

void Puma::CCSemantic::leave_template_arg_list (  )  [inline]

void Puma::CCSemantic::leave_conv_type_id (  )  [inline]

void Puma::CCSemantic::leave_entity_name (  )  [inline]

void Puma::CCSemantic::leave_nested_name (  )  [inline]

bool Puma::CCSemantic::leave_expr (  )  [inline]

void Puma::CCSemantic::leave_extern_decl (  )  [inline]

bool Puma::CCSemantic::in_base_spec (  )  const [inline]

bool Puma::CCSemantic::in_class_def (  )  const [inline]

bool Puma::CCSemantic::in_conv_type_id (  )  const [inline]

bool Puma::CCSemantic::in_nested_name (  )  const [inline]

bool Puma::CCSemantic::in_expr (  )  const [inline]

bool Puma::CCSemantic::in_extern_decl (  )  const [inline]

bool Puma::CCSemantic::is_entity_name (  )  const [inline]

Syntax::State Puma::CCSemantic::in_template_param_list (  )  const [inline]

Syntax::State Puma::CCSemantic::in_template_arg_list (  )  const [inline]

CProtection::Type Puma::CCSemantic::protection (  )  const [inline, virtual]

Reimplemented from Puma::CSemantic.

bool Puma::CCSemantic::non_project_loc (  ) 

bool Puma::CCSemantic::non_primary_loc (  ) 

bool Puma::CCSemantic::skip_tpl_fct_bodies (  )  const

bool Puma::CCSemantic::reset_search_scope ( bool  = false  ) 

CStructure* Puma::CCSemantic::array_delim ( CStructure = 0  ) 

void Puma::CCSemantic::postfix_expr ( CTree expr  )  [inline]

int Puma::CCSemantic::lookup_rule (  ) 

void Puma::CCSemantic::add_rule ( CTree CCSyntax::*)(,
CTree ,
void(CCSyntax::*)()   
)

void Puma::CCSemantic::parse_rules (  ) 

void Puma::CCSemantic::reject_rules (  ) 

virtual void Puma::CCSemantic::add_base_classes ( CTree  )  [virtual]

void Puma::CCSemantic::enter_scope ( CStructure scope  )  [protected, virtual]

Enter the given scope.

Sets the parent of the entered scope to the current scope.

Parameters:
scope The scope to enter.

Reimplemented from Puma::Semantic.

void Puma::CCSemantic::deleteContainer ( int   )  [protected]

void Puma::CCSemantic::setQualName ( CObjectInfo ,
CObjectInfo  
) const [protected]

CStructure* Puma::CCSemantic::getQualifiedScope ( CStructure scope  )  const [protected]

CTypeInfo* Puma::CCSemantic::resolveExpr ( CTree ,
CTree = (CTree *) 0 
) const [protected]

Reimplemented from Puma::CSemantic.

void Puma::CCSemantic::calculateAddress ( CTree  )  const [protected]

bool Puma::CCSemantic::isAddrExpr ( CTree  )  const [protected]

CObjectInfo* Puma::CCSemantic::getLastResolvedName ( CT_SimpleName  )  const [protected]

CStructure* Puma::CCSemantic::getNameScope ( CT_SimpleName ,
bool  = true 
) const [protected]

CStructure* Puma::CCSemantic::getScope ( CObjectInfo obj  )  const [protected]

CStructure* Puma::CCSemantic::getFriendScope ( bool  skip_tpl_scope = false  )  const [protected]

CStructure* Puma::CCSemantic::getNonTplScope ( bool  consider_instance_scope = false  )  const [protected]

void Puma::CCSemantic::qualifiedScopeName ( CT_SimpleName ,
std::ostringstream &   
) const [protected]

bool Puma::CCSemantic::isQualName ( CT_SimpleName  )  const [protected]

bool Puma::CCSemantic::realTypedef ( CObjectInfo  )  const [protected]

bool Puma::CCSemantic::equalType ( CTypeInfo ,
CTypeInfo ,
bool  = true 
) const [protected]

void Puma::CCSemantic::lookupName ( const Token ,
CStructure ,
bool   
) [protected]

bool Puma::CCSemantic::isClassOrEnum ( CObjectInfo  )  const [protected]

void Puma::CCSemantic::introduceTemplate ( CObjectInfo ,
CTemplateInfo  
) [protected]

void Puma::CCSemantic::setTemplateScope ( CCNameLookup ,
CObjectInfo ,
CTypeInfo ,
CTemplateInfo ,
bool   
) [protected]

bool Puma::CCSemantic::isSpecialization ( CTree  )  const [protected]

void Puma::CCSemantic::setSpecializationName ( CTree ,
CTemplateInfo  
) const [protected]

bool Puma::CCSemantic::matchArguments ( CT_TemplateName n1,
CT_TemplateName n2 
) const [protected]

CLinkage::Type Puma::CCSemantic::determine_linkage ( CSemDeclSpecs ,
SemObjType  ,
CObjectInfo = (CObjectInfo *) 0 
) const [protected]

Reimplemented from Puma::CSemantic.

CStorage::Type Puma::CCSemantic::determine_storage_class ( CSemDeclSpecs  )  const [protected]

void Puma::CCSemantic::setLanguage ( CObjectInfo  )  const [protected]

void Puma::CCSemantic::setProtection ( CObjectInfo info  )  const [inline, protected]

void Puma::CCSemantic::linkFctDecls ( CCNameLookup ,
CObjectInfo  
) const [protected]

void Puma::CCSemantic::linkCtorDecls ( CObjectInfo  )  const [protected]

void Puma::CCSemantic::declareNamespaceStd (  )  [protected]

void Puma::CCSemantic::declareImplicitFcts (  )  [protected]

Reimplemented from Puma::CSemantic.

void Puma::CCSemantic::declareSpecialMembers (  )  [protected]

CFunctionInfo* Puma::CCSemantic::createMethod ( const char *  ,
CRecord ,
CTypeInfo  
) [protected]

bool Puma::CCSemantic::isRefToClass ( CTypeInfo ,
CRecord  
) const [protected]

bool Puma::CCSemantic::isBaseClass ( CClassInfo ,
CClassInfo  
) const [protected]

void Puma::CCSemantic::addBaseClasses ( CClassInfo ,
CT_ClassDef  
) [protected]

void Puma::CCSemantic::addBaseClass ( CClassInfo ,
CT_BaseSpec  
) [protected]

virtual bool Puma::CCSemantic::check_function_lookup ( CCNameLookup ,
CStructure ,
CSemDeclSpecs ,
CCSemDeclarator ,
CTree ,
bool   
) [protected, virtual]

virtual bool Puma::CCSemantic::check_member_lookup ( CCNameLookup ,
CStructure ,
CSemDeclSpecs ,
CCSemDeclarator ,
CTree ,
bool &  ,
bool   
) [protected, virtual]

virtual bool Puma::CCSemantic::check_object_lookup ( CCNameLookup ,
CStructure ,
CSemDeclSpecs ,
CCSemDeclarator ,
CTree ,
bool &  ,
CObjectInfo *&   
) [protected, virtual]


Member Data Documentation

Stack<const char*> Puma::CCSemantic::_in_extern_decl [protected]

struct { ... } Puma::CCSemantic::last_token_nl [protected]

Stack<bool> Puma::CCSemantic::_in_expr [protected]

bool Puma::CCSemantic::real_inst [protected]




Puma Reference Manual. Created on 5 Nov 2008.