00001
#ifndef INC_PascalParser_hpp_
00002
#define INC_PascalParser_hpp_
00003
00004
#line 29 "pascal.g"
00005
00006
#include "problemreporter.h"
00007
#include "PascalAST.hpp"
00008
00009
#include <qlistview.h>
00010
#include <kdebug.h>
00011
00012 #define SET_POSITION(ast,t)\
00013
{ \
00014
RefPascalAST(ast)->setLine( t->getLine() );\
00015
RefPascalAST(ast)->setColumn( t->getColumn() ); \
00016
}
00017
00018
#line 19 "PascalParser.hpp"
00019
#include <antlr/config.hpp>
00020
00021
#include <antlr/TokenStream.hpp>
00022
#include <antlr/TokenBuffer.hpp>
00023
#include "PascalTokenTypes.hpp"
00024
#include <antlr/LLkParser.hpp>
00025
00026 class PascalParser :
public ANTLR_USE_NAMESPACE(antlr)
LLkParser,
public PascalTokenTypes
00027 {
00028
#line 90 "pascal.g"
00029
00030
private:
00031 unsigned int m_numberOfErrors;
00032 ProblemReporter*
m_problemReporter;
00033
00034
public:
00035 void resetErrors() {
m_numberOfErrors = 0; }
00036 unsigned int numberOfErrors()
const {
return m_numberOfErrors; }
00037 void setProblemReporter(
ProblemReporter* r ) {
m_problemReporter = r; }
00038
00039 void reportError(
const ANTLR_USE_NAMESPACE(antlr)
RecognitionException& ex ){
00040
m_problemReporter->
reportError( ex.getMessage().c_str(),
00041 ex.getFilename().c_str(),
00042 ex.getLine(),
00043 ex.getColumn() );
00044 ++
m_numberOfErrors;
00045 }
00046
00047 void reportError(
const ANTLR_USE_NAMESPACE(std)string& errorMessage ){
00048
m_problemReporter->
reportError( errorMessage.c_str(),
00049 getFilename().c_str(),
00050 LT(1)->getLine(),
00051 LT(1)->getColumn() );
00052 ++
m_numberOfErrors;
00053 }
00054
00055 void reportMessage(
const ANTLR_USE_NAMESPACE(std)string& message ){
00056
m_problemReporter->
reportMessage(
message.c_str(),
00057 getFilename().c_str(),
00058 LT(1)->getLine(),
00059 LT(1)->getColumn() );
00060 }
00061
#line 30 "PascalParser.hpp"
00062
public:
00063
void initializeASTFactory(
ANTLR_USE_NAMESPACE(antlr)
ASTFactory& factory );
00064
protected:
00065
PascalParser(
ANTLR_USE_NAMESPACE(antlr)
TokenBuffer& tokenBuf,
int k);
00066
public:
00067
PascalParser(
ANTLR_USE_NAMESPACE(antlr)
TokenBuffer& tokenBuf);
00068
protected:
00069
PascalParser(
ANTLR_USE_NAMESPACE(antlr)
TokenStream& lexer,
int k);
00070
public:
00071
PascalParser(
ANTLR_USE_NAMESPACE(antlr)
TokenStream& lexer);
00072
PascalParser(
const ANTLR_USE_NAMESPACE(antlr)
ParserSharedInputState& state);
00073 int getNumTokens()
const
00074
{
00075
return PascalParser::NUM_TOKENS;
00076 }
00077 const char*
getTokenName(
int type )
const
00078
{
00079
if( type >
getNumTokens() )
return 0;
00080
return PascalParser::tokenNames[type];
00081 }
00082 const char*
const*
getTokenNames()
const
00083
{
00084
return PascalParser::tokenNames;
00085 }
00086
public:
void compilationUnit();
00087
public:
void program();
00088
public:
void library();
00089
public:
void unit();
00090
public:
void programHeading();
00091
public:
void usesClause();
00092
public:
void block();
00093
public:
void identifier();
00094
public:
void libraryBlock();
00095
public:
void exportsClause();
00096
public:
void declarationPart();
00097
public:
void statementPart();
00098
public:
void exportsList();
00099
public:
void exportsEntry();
00100
public:
void integerConstant();
00101
public:
void stringConstant();
00102
public:
void identifierList();
00103
public:
void interfacePart();
00104
public:
void implementationPart();
00105
public:
void initializationPart();
00106
public:
void finalizationPart();
00107
public:
void realizationPart();
00108
public:
void constantDeclarationPart();
00109
public:
void typeDeclarationPart();
00110
public:
void procedureHeadersPart();
00111
public:
void statement();
00112
public:
void labelDeclarationPart();
00113
public:
void resourcestringDeclarationPart();
00114
public:
void variableDeclarationPart();
00115
public:
void procedureAndFunctionDeclarationPart();
00116
public:
void label();
00117
public:
void constantDeclaration();
00118
public:
void typedConstantDeclaration();
00119
public:
void stringConstantDeclaration();
00120
public:
void string();
00121
public:
void typeDeclaration();
00122
public:
void variableDeclaration();
00123
public:
void type();
00124
public:
void procedureAndFunctionDeclaration();
00125
public:
void procedureDeclaration();
00126
public:
void functionDeclaration();
00127
public:
void constructorDeclaration();
00128
public:
void destructorDeclaration();
00129
public:
void compoundStatement();
00130
public:
void procedureHeader();
00131
public:
void subroutineBlock();
00132
public:
void functionHeader();
00133
public:
void qualifiedMethodIdentifier();
00134
public:
void formalParameterList();
00135
public:
void modifiers();
00136
public:
void externalDirective();
00137
public:
void functionHeaderEnding();
00138
public:
void parameterDeclaration();
00139
public:
void valueParameter();
00140
public:
void variableParameter();
00141
public:
void constantParameter();
00142
public:
void untypedParameterPart();
00143
public:
void callModifiers();
00144
public:
void expression();
00145
public:
void typedConstant();
00146
public:
void constant();
00147
public:
void recordConstant();
00148
public:
void arrayConstant();
00149
public:
void proceduralConstant();
00150
public:
void addressConstant();
00151
public:
void simpleType();
00152
public:
void subrangeTypeOrTypeIdentifier();
00153
public:
void enumeratedType();
00154
public:
void stringType();
00155
public:
void structuredType();
00156
public:
void pointerType();
00157
public:
void proceduralType();
00158
public:
void ordinalType();
00159
public:
void realType();
00160
public:
void typeIdentifier();
00161
public:
void subrangeType();
00162
public:
void assignedEnumList();
00163
public:
void unsignedInteger();
00164
public:
void arrayType();
00165
public:
void recordType();
00166
public:
void objectType();
00167
public:
void classType();
00168
public:
void setType();
00169
public:
void fileType();
00170
public:
void arrayIndexType();
00171
public:
void arraySubrangeType();
00172
public:
void fieldList();
00173
public:
void fixedField();
00174
public:
void variantPart();
00175
public:
void variant();
00176
public:
void proceduralTypePart1();
00177
public:
void heritage();
00178
public:
void componentList();
00179
public:
void objectVisibilitySpecifier();
00180
public:
void fieldDefinition();
00181
public:
void methodDefinition();
00182
public:
void constructorHeader();
00183
public:
void destructorHeader();
00184
public:
void methodDirectives();
00185
public:
void classComponentList();
00186
public:
void classVisibilitySpecifier();
00187
public:
void classMethodDefinition();
00188
public:
void propertyDefinition();
00189
public:
void classMethodDirectives();
00190
public:
void directiveVariants();
00191
public:
void propertyInterface();
00192
public:
void propertySpecifiers();
00193
public:
void propertyParameterList();
00194
public:
void readSpecifier();
00195
public:
void writeSpecifier();
00196
public:
void defaultSpecifier();
00197
public:
void fieldOrMethod();
00198
public:
void simpleExpression();
00199
public:
void expressionSign();
00200
public:
void term();
00201
public:
void factor();
00202
public:
void identifierOrValueTypecastOrFunctionCall();
00203
public:
void unsignedConstant();
00204
public:
void setConstructor();
00205
public:
void addressFactor();
00206
public:
void expressions();
00207
public:
void functionCall();
00208
public:
void actualParameterList();
00209
public:
void setGroup();
00210
public:
void valueTypecast();
00211
public:
void simpleStatement();
00212
public:
void structuredStatement();
00213
public:
void assignmentStatement();
00214
public:
void procedureStatement();
00215
public:
void gotoStatement();
00216
public:
void raiseStatement();
00217
public:
void identifierOrArrayIdentifier();
00218
public:
void assignmentOperator();
00219
public:
void repetitiveStatement();
00220
public:
void conditionalStatement();
00221
public:
void exceptionStatement();
00222
public:
void withStatement();
00223
public:
void ifStatement();
00224
public:
void caseStatement();
00225
public:
void forStatement();
00226
public:
void repeatStatement();
00227
public:
void whileStatement();
00228
public:
void caseListElement();
00229
public:
void constList();
00230
public:
void forList();
00231
public:
void initialValue();
00232
public:
void finalValue();
00233
public:
void recordVariableList();
00234
public:
void variable();
00235
public:
void operatorDefinition();
00236
public:
void assignmentOperatorDefinition();
00237
public:
void arithmeticOperatorDefinition();
00238
public:
void comparisonOperatorDefinition();
00239
public:
void tryStatement();
00240
public:
void statements();
00241
public:
void exceptOrFinallyPart();
00242
public:
void exceptionHandlers();
00243
public:
void exceptionHandler();
00244
public:
void sign();
00245
public:
void constantChr();
00246
public:
void unsignedNumber();
00247
public:
void unsignedReal();
00248
public:
00249
RefPascalAST getAST();
00250
00251
protected:
00252 RefPascalAST returnAST;
00253
private:
00254
static const char*
tokenNames[];
00255
#ifndef NO_STATIC_CONSTS
00256 static const int NUM_TOKENS = 190;
00257
#else
00258
enum {
00259
NUM_TOKENS = 190
00260 };
00261
#endif
00262
00263
static const unsigned long _tokenSet_0_data_[];
00264
static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_0;
00265 static const
unsigned long _tokenSet_1_data_[];
00266 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_1;
00267 static const
unsigned long _tokenSet_2_data_[];
00268 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_2;
00269 static const
unsigned long _tokenSet_3_data_[];
00270 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_3;
00271 static const
unsigned long _tokenSet_4_data_[];
00272 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_4;
00273 static const
unsigned long _tokenSet_5_data_[];
00274 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_5;
00275 static const
unsigned long _tokenSet_6_data_[];
00276 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_6;
00277 static const
unsigned long _tokenSet_7_data_[];
00278 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_7;
00279 static const
unsigned long _tokenSet_8_data_[];
00280 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_8;
00281 static const
unsigned long _tokenSet_9_data_[];
00282 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_9;
00283 static const
unsigned long _tokenSet_10_data_[];
00284 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_10;
00285 static const
unsigned long _tokenSet_11_data_[];
00286 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_11;
00287 static const
unsigned long _tokenSet_12_data_[];
00288 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_12;
00289 static const
unsigned long _tokenSet_13_data_[];
00290 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_13;
00291 static const
unsigned long _tokenSet_14_data_[];
00292 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_14;
00293 static const
unsigned long _tokenSet_15_data_[];
00294 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_15;
00295 static const
unsigned long _tokenSet_16_data_[];
00296 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_16;
00297 static const
unsigned long _tokenSet_17_data_[];
00298 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_17;
00299 static const
unsigned long _tokenSet_18_data_[];
00300 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_18;
00301 static const
unsigned long _tokenSet_19_data_[];
00302 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_19;
00303 static const
unsigned long _tokenSet_20_data_[];
00304 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_20;
00305 static const
unsigned long _tokenSet_21_data_[];
00306 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_21;
00307 static const
unsigned long _tokenSet_22_data_[];
00308 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_22;
00309 static const
unsigned long _tokenSet_23_data_[];
00310 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_23;
00311 static const
unsigned long _tokenSet_24_data_[];
00312 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_24;
00313 static const
unsigned long _tokenSet_25_data_[];
00314 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_25;
00315 static const
unsigned long _tokenSet_26_data_[];
00316 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_26;
00317 static const
unsigned long _tokenSet_27_data_[];
00318 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_27;
00319 static const
unsigned long _tokenSet_28_data_[];
00320 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_28;
00321 static const
unsigned long _tokenSet_29_data_[];
00322 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_29;
00323 static const
unsigned long _tokenSet_30_data_[];
00324 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_30;
00325 static const
unsigned long _tokenSet_31_data_[];
00326 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_31;
00327 static const
unsigned long _tokenSet_32_data_[];
00328 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_32;
00329 static const
unsigned long _tokenSet_33_data_[];
00330 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_33;
00331 static const
unsigned long _tokenSet_34_data_[];
00332 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_34;
00333 static const
unsigned long _tokenSet_35_data_[];
00334 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_35;
00335 static const
unsigned long _tokenSet_36_data_[];
00336 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_36;
00337 static const
unsigned long _tokenSet_37_data_[];
00338 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_37;
00339 static const
unsigned long _tokenSet_38_data_[];
00340 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_38;
00341 static const
unsigned long _tokenSet_39_data_[];
00342 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_39;
00343 static const
unsigned long _tokenSet_40_data_[];
00344 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_40;
00345 static const
unsigned long _tokenSet_41_data_[];
00346 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_41;
00347 static const
unsigned long _tokenSet_42_data_[];
00348 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_42;
00349 static const
unsigned long _tokenSet_43_data_[];
00350 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_43;
00351 static const
unsigned long _tokenSet_44_data_[];
00352 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_44;
00353 static const
unsigned long _tokenSet_45_data_[];
00354 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_45;
00355 static const
unsigned long _tokenSet_46_data_[];
00356 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_46;
00357 static const
unsigned long _tokenSet_47_data_[];
00358 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_47;
00359 static const
unsigned long _tokenSet_48_data_[];
00360 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_48;
00361 static const
unsigned long _tokenSet_49_data_[];
00362 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_49;
00363 static const
unsigned long _tokenSet_50_data_[];
00364 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_50;
00365 static const
unsigned long _tokenSet_51_data_[];
00366 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_51;
00367 static const
unsigned long _tokenSet_52_data_[];
00368 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_52;
00369 static const
unsigned long _tokenSet_53_data_[];
00370 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_53;
00371 static const
unsigned long _tokenSet_54_data_[];
00372 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_54;
00373 static const
unsigned long _tokenSet_55_data_[];
00374 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_55;
00375 static const
unsigned long _tokenSet_56_data_[];
00376 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_56;
00377 static const
unsigned long _tokenSet_57_data_[];
00378 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_57;
00379 static const
unsigned long _tokenSet_58_data_[];
00380 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_58;
00381 static const
unsigned long _tokenSet_59_data_[];
00382 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_59;
00383 static const
unsigned long _tokenSet_60_data_[];
00384 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_60;
00385 static const
unsigned long _tokenSet_61_data_[];
00386 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_61;
00387 static const
unsigned long _tokenSet_62_data_[];
00388 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_62;
00389 static const
unsigned long _tokenSet_63_data_[];
00390 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_63;
00391 static const
unsigned long _tokenSet_64_data_[];
00392 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_64;
00393 static const
unsigned long _tokenSet_65_data_[];
00394 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_65;
00395 static const
unsigned long _tokenSet_66_data_[];
00396 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_66;
00397 static const
unsigned long _tokenSet_67_data_[];
00398 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_67;
00399 static const
unsigned long _tokenSet_68_data_[];
00400 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_68;
00401 static const
unsigned long _tokenSet_69_data_[];
00402 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_69;
00403 static const
unsigned long _tokenSet_70_data_[];
00404 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_70;
00405 static const
unsigned long _tokenSet_71_data_[];
00406 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_71;
00407 static const
unsigned long _tokenSet_72_data_[];
00408 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_72;
00409 static const
unsigned long _tokenSet_73_data_[];
00410 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_73;
00411 static const
unsigned long _tokenSet_74_data_[];
00412 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_74;
00413 static const
unsigned long _tokenSet_75_data_[];
00414 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_75;
00415 static const
unsigned long _tokenSet_76_data_[];
00416 static const ANTLR_USE_NAMESPACE(antlr)
BitSet _tokenSet_76;
00417 };
00418
00419 #endif