00001
#ifndef INC_AdaStoreWalker_hpp_
00002
#define INC_AdaStoreWalker_hpp_
00003
00004
#line 1 "expandedada.store.g"
00005
00006
#include <qstring.h>
00007
#include <qstringlist.h>
00008
#include <qfileinfo.h>
00009
00010
#include <codemodel.h>
00011
#include "AdaAST.hpp"
00012
#include "ada_utils.hpp"
00013
00014
#line 15 "AdaStoreWalker.hpp"
00015
#include <antlr/config.hpp>
00016
#include "AdaStoreWalkerTokenTypes.hpp"
00017
00018
#include <antlr/TreeParser.hpp>
00019
00020
#line 10 "expandedada.store.g"
00021
00022
#include <codemodel.h>
00023
#include <kdebug.h>
00024
00025
#line 26 "AdaStoreWalker.hpp"
00026 class AdaStoreWalker :
public ANTLR_USE_NAMESPACE(antlr)
TreeParser,
public AdaStoreWalkerTokenTypes
00027 {
00028
#line 25 "expandedada.store.g"
00029
00030
private:
00031 QString m_fileName;
00032 QValueList<NamespaceDom> m_scopeStack;
00033 CodeModel*
m_model;
00034 QValueList<QStringList> m_imports;
00035 NamespaceDom m_currentContainer;
00036 int m_currentAccess;
00037 bool m_addToStore;
00038
00039 bool m_isSubprogram;
00040 FileDom m_file;
00041
00042
public:
00043 void setCodeModel (
CodeModel* model) {
m_model = model; }
00044 CodeModel*
codeModel () {
return m_model; }
00045 const CodeModel*
codeModel ()
const {
return m_model; }
00046
00047 QString fileName ()
const {
return m_fileName; }
00048 void setFileName (
const QString& fileName) {
m_fileName = fileName; }
00049
00050 void init () {
00051
m_scopeStack.clear ();
00052
m_imports.clear ();
00053
m_currentContainer =
m_model->
globalNamespace ();
00054
m_scopeStack.append (
m_currentContainer);
00055
m_currentAccess = CodeModelItem::Public;
00056
m_addToStore =
false;
00057
m_isSubprogram =
false;
00058
if (
m_model->
hasFile(
m_fileName))
00059
m_model->
removeFile (
m_model->
fileByName(
m_fileName));
00060
m_file =
m_model->
create<
FileModel>();
00061
m_file->setName(
m_fileName);
00062
m_model->
addFile(
m_file);
00063 }
00064
00065 void wipeout () {
m_model->
wipeout (); }
00066
00067 void removeWithReferences (
const QString& fileName) {
00068
m_model->
removeFile (
m_model->
fileByName(fileName));
00069 }
00070
NamespaceDom insertScopeContainer
00071 (
NamespaceDom scope,
const QStringList & scopes ) {
00072 QStringList::ConstIterator it = scopes.begin();
00073
QString prefix( *it );
00074
NamespaceDom ns = scope->namespaceByName( prefix );
00075
00076
if (!ns.
data()) {
00077
00078 ns =
m_model->
create<
NamespaceModel>();
00079
00080 ns->setName( prefix );
00081
00082 scope->addNamespace( ns );
00083
00084
00085
if (scope ==
m_model->
globalNamespace())
00086
m_file->addNamespace( ns );
00087 }
00088
00089
while ( ++it != scopes.end() ) {
00090
QString nameSegment( *it );
00091 prefix +=
"." + nameSegment;
00092
00093
NamespaceDom inner = scope->namespaceByName( prefix );
00094
if (!inner.
data() ) {
00095
00096 inner =
m_model->
create<
NamespaceModel>();
00097
00098 inner->setName( nameSegment );
00099 ns->addNamespace( inner );
00100
00101 }
00102 ns = inner;
00103 }
00104
return ns;
00105 }
00106 NamespaceDom defineScope( RefAdaAST namenode ) {
00107
QStringList scopes(
qnamelist( namenode ) );
00108
00109
NamespaceDom psc =
insertScopeContainer(
m_currentContainer, scopes );
00110
00111 psc->setStartPosition(namenode->getLine(), namenode->getColumn());
00112
00113 psc->setFileName(
m_fileName);
00114
00115
00116
00117
return psc;
00118 }
00119
#line 30 "AdaStoreWalker.hpp"
00120
public:
00121
AdaStoreWalker();
00122
void initializeASTFactory(
ANTLR_USE_NAMESPACE(antlr)
ASTFactory& factory );
00123 int getNumTokens()
const
00124
{
00125
return AdaStoreWalker::NUM_TOKENS;
00126 }
00127 const char*
getTokenName(
int type )
const
00128
{
00129
if( type >
getNumTokens() )
return 0;
00130
return AdaStoreWalker::tokenNames[type];
00131 }
00132
public:
void compilation_unit(RefAdaAST _t);
00133
public:
void context_items_opt(RefAdaAST _t);
00134
public:
void library_item(RefAdaAST _t);
00135
public:
void subunit(RefAdaAST _t);
00136
public:
void pragma(RefAdaAST _t);
00137
public:
void with_clause(RefAdaAST _t);
00138
public:
void compound_name(RefAdaAST _t);
00139
public:
void use_clause(RefAdaAST _t);
00140
public:
void subtype_mark(RefAdaAST _t);
00141
public:
void lib_subprog_decl_or_rename_or_inst_or_body(RefAdaAST _t);
00142
public:
void def_id(RefAdaAST _t);
00143
public:
void pkg_body_part(RefAdaAST _t);
00144
public:
void generic_inst(RefAdaAST _t);
00145
public:
void pkg_spec_part(RefAdaAST _t);
00146
public:
void renames(RefAdaAST _t);
00147
public:
void generic_decl(RefAdaAST _t);
00148
public:
void subprog_def_id(RefAdaAST _t);
00149
public:
void subprog_decl(RefAdaAST _t);
00150
public:
void formal_part_opt(RefAdaAST _t);
00151
public:
void def_designator(RefAdaAST _t);
00152
public:
void function_tail(RefAdaAST _t);
00153
public:
void definable_operator_symbol(RefAdaAST _t);
00154
public:
void spec_decl_part(RefAdaAST _t);
00155
public:
void basic_declarative_items_opt(RefAdaAST _t);
00156
public:
void generic_formal_part_opt(RefAdaAST _t);
00157
public:
void procedure_body(RefAdaAST _t);
00158
public:
void function_body(RefAdaAST _t);
00159
public:
void subprog_decl_or_rename_or_inst_or_body(RefAdaAST _t);
00160
public:
void subprog_decl_or_body(RefAdaAST _t);
00161
public:
void package_body(RefAdaAST _t);
00162
public:
void pragma_arg(RefAdaAST _t);
00163
public:
void expression(RefAdaAST _t);
00164
public:
void attribute_id(RefAdaAST _t);
00165
public:
void modifiers(RefAdaAST _t);
00166
public:
void value_s(RefAdaAST _t);
00167
public:
void value(RefAdaAST _t);
00168
public:
void ranged_expr_s(RefAdaAST _t);
00169
public:
void ranged_expr(RefAdaAST _t);
00170
public:
void simple_expression(RefAdaAST _t);
00171
public:
void range(RefAdaAST _t);
00172
public:
void range_constraint(RefAdaAST _t);
00173
public:
void range_dots(RefAdaAST _t);
00174
public:
void range_attrib_ref(RefAdaAST _t);
00175
public:
void prefix(RefAdaAST _t);
00176
public:
void parameter_specification(RefAdaAST _t);
00177
public:
void defining_identifier_list(RefAdaAST _t);
00178
public:
void init_opt(RefAdaAST _t);
00179
public:
void name(RefAdaAST _t);
00180
public:
void parenthesized_primary(RefAdaAST _t);
00181
public:
void extension_opt(RefAdaAST _t);
00182
public:
void basic_decl_item(RefAdaAST _t);
00183
public:
void task_type_or_single_decl(RefAdaAST _t);
00184
public:
void prot_type_or_single_decl(RefAdaAST _t);
00185
public:
void decl_common(RefAdaAST _t);
00186
public:
void discrim_part_opt(RefAdaAST _t);
00187
public:
void task_definition_opt(RefAdaAST _t);
00188
public:
void task_items_opt(RefAdaAST _t);
00189
public:
void private_task_items_opt(RefAdaAST _t);
00190
public:
void discriminant_specifications(RefAdaAST _t);
00191
public:
void discriminant_specification(RefAdaAST _t);
00192
public:
void entrydecls_repspecs_opt(RefAdaAST _t);
00193
public:
void entry_declaration(RefAdaAST _t);
00194
public:
void rep_spec(RefAdaAST _t);
00195
public:
void discrete_subtype_def_opt(RefAdaAST _t);
00196
public:
void discrete_subtype_definition(RefAdaAST _t);
00197
public:
void subtype_ind(RefAdaAST _t);
00198
public:
void align_opt(RefAdaAST _t);
00199
public:
void comp_loc_s(RefAdaAST _t);
00200
public:
void local_enum_name(RefAdaAST _t);
00201
public:
void enumeration_aggregate(RefAdaAST _t);
00202
public:
void protected_definition(RefAdaAST _t);
00203
public:
void prot_op_decl_s(RefAdaAST _t);
00204
public:
void prot_member_decl_s(RefAdaAST _t);
00205
public:
void prot_op_decl(RefAdaAST _t);
00206
public:
void comp_decl(RefAdaAST _t);
00207
public:
void component_subtype_def(RefAdaAST _t);
00208
public:
void enum_id_s(RefAdaAST _t);
00209
public:
void range_constraint_opt(RefAdaAST _t);
00210
public:
void array_type_declaration(RefAdaAST _t);
00211
public:
void access_type_declaration(RefAdaAST _t);
00212
public:
void id_and_discrim(RefAdaAST _t);
00213
public:
void record_definition(RefAdaAST _t);
00214
public:
void array_type_definition(RefAdaAST _t);
00215
public:
void enumeration_literal_specification(RefAdaAST _t);
00216
public:
void index_or_discrete_range_s(RefAdaAST _t);
00217
public:
void index_or_discrete_range(RefAdaAST _t);
00218
public:
void constraint_opt(RefAdaAST _t);
00219
public:
void digits_constraint(RefAdaAST _t);
00220
public:
void delta_constraint(RefAdaAST _t);
00221
public:
void index_constraint(RefAdaAST _t);
00222
public:
void discriminant_constraint(RefAdaAST _t);
00223
public:
void discrete_range(RefAdaAST _t);
00224
public:
void discriminant_association(RefAdaAST _t);
00225
public:
void selector_names_opt(RefAdaAST _t);
00226
public:
void selector_name(RefAdaAST _t);
00227
public:
void component_list(RefAdaAST _t);
00228
public:
void component_items(RefAdaAST _t);
00229
public:
void variant_part(RefAdaAST _t);
00230
public:
void discriminant_direct_name(RefAdaAST _t);
00231
public:
void variant_s(RefAdaAST _t);
00232
public:
void variant(RefAdaAST _t);
00233
public:
void choice_s(RefAdaAST _t);
00234
public:
void choice(RefAdaAST _t);
00235
public:
void discrete_with_range(RefAdaAST _t);
00236
public:
void mark_with_constraint(RefAdaAST _t);
00237
public:
void generic_formal_parameter(RefAdaAST _t);
00238
public:
void formal_array_type_declaration(RefAdaAST _t);
00239
public:
void formal_access_type_declaration(RefAdaAST _t);
00240
public:
void id_part(RefAdaAST _t);
00241
public:
void subprogram_default_opt(RefAdaAST _t);
00242
public:
void formal_package_actual_part_opt(RefAdaAST _t);
00243
public:
void body_part(RefAdaAST _t);
00244
public:
void declarative_part(RefAdaAST _t);
00245
public:
void block_body(RefAdaAST _t);
00246
public:
void declarative_item(RefAdaAST _t);
00247
public:
void prot_op_bodies_opt(RefAdaAST _t);
00248
public:
void block_body_opt(RefAdaAST _t);
00249
public:
void handled_stmt_s(RefAdaAST _t);
00250
public:
void entry_body(RefAdaAST _t);
00251
public:
void statements(RefAdaAST _t);
00252
public:
void except_handler_part_opt(RefAdaAST _t);
00253
public:
void statement(RefAdaAST _t);
00254
public:
void def_label_opt(RefAdaAST _t);
00255
public:
void null_stmt(RefAdaAST _t);
00256
public:
void exit_stmt(RefAdaAST _t);
00257
public:
void return_stmt(RefAdaAST _t);
00258
public:
void goto_stmt(RefAdaAST _t);
00259
public:
void delay_stmt(RefAdaAST _t);
00260
public:
void abort_stmt(RefAdaAST _t);
00261
public:
void raise_stmt(RefAdaAST _t);
00262
public:
void requeue_stmt(RefAdaAST _t);
00263
public:
void accept_stmt(RefAdaAST _t);
00264
public:
void select_stmt(RefAdaAST _t);
00265
public:
void if_stmt(RefAdaAST _t);
00266
public:
void case_stmt(RefAdaAST _t);
00267
public:
void loop_stmt(RefAdaAST _t);
00268
public:
void block(RefAdaAST _t);
00269
public:
void call_or_assignment(RefAdaAST _t);
00270
public:
void cond_clause(RefAdaAST _t);
00271
public:
void elsifs_opt(RefAdaAST _t);
00272
public:
void else_opt(RefAdaAST _t);
00273
public:
void condition(RefAdaAST _t);
00274
public:
void alternative_s(RefAdaAST _t);
00275
public:
void case_statement_alternative(RefAdaAST _t);
00276
public:
void iteration_scheme_opt(RefAdaAST _t);
00277
public:
void declare_opt(RefAdaAST _t);
00278
public:
void label_name(RefAdaAST _t);
00279
public:
void entry_body_formal_part(RefAdaAST _t);
00280
public:
void entry_barrier(RefAdaAST _t);
00281
public:
void entry_index_spec_opt(RefAdaAST _t);
00282
public:
void entry_call_stmt(RefAdaAST _t);
00283
public:
void entry_index_opt(RefAdaAST _t);
00284
public:
void triggering_alternative(RefAdaAST _t);
00285
public:
void abortable_part(RefAdaAST _t);
00286
public:
void selective_accept(RefAdaAST _t);
00287
public:
void entry_call_alternative(RefAdaAST _t);
00288
public:
void delay_alternative(RefAdaAST _t);
00289
public:
void stmts_opt(RefAdaAST _t);
00290
public:
void guard_opt(RefAdaAST _t);
00291
public:
void select_alternative(RefAdaAST _t);
00292
public:
void or_select_opt(RefAdaAST _t);
00293
public:
void accept_alternative(RefAdaAST _t);
00294
public:
void exception_handler(RefAdaAST _t);
00295
public:
void identifier_colon_opt(RefAdaAST _t);
00296
public:
void except_choice_s(RefAdaAST _t);
00297
public:
void exception_choice(RefAdaAST _t);
00298
public:
void operator_call(RefAdaAST _t);
00299
public:
void relation(RefAdaAST _t);
00300
public:
void range_or_mark(RefAdaAST _t);
00301
public:
void signed_term(RefAdaAST _t);
00302
public:
void term(RefAdaAST _t);
00303
public:
void factor(RefAdaAST _t);
00304
public:
void primary(RefAdaAST _t);
00305
public:
void name_or_qualified(RefAdaAST _t);
00306
public:
void allocator(RefAdaAST _t);
00307
public:
void subprogram_body(RefAdaAST _t);
00308
public:
void task_body(RefAdaAST _t);
00309
public:
void protected_body(RefAdaAST _t);
00310
public:
00311
RefAdaAST getAST();
00312
00313
protected:
00314 RefAdaAST returnAST;
00315 RefAdaAST _retTree;
00316
private:
00317
static const char*
tokenNames[];
00318
#ifndef NO_STATIC_CONSTS
00319 static const int NUM_TOKENS = 305;
00320
#else
00321
enum {
00322
NUM_TOKENS = 305
00323 };
00324
#endif
00325
00326
static const unsigned long _tokenSet_0_data_[];
00327
static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_0;
00328 static const
unsigned long _tokenSet_1_data_[];
00329 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_1;
00330 static const
unsigned long _tokenSet_2_data_[];
00331 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_2;
00332 static const
unsigned long _tokenSet_3_data_[];
00333 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_3;
00334 static const
unsigned long _tokenSet_4_data_[];
00335 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_4;
00336 };
00337
00338 #endif