00001
00002
#include "PascalLexer.hpp"
00003
#include <antlr/CharBuffer.hpp>
00004
#include <antlr/TokenStreamException.hpp>
00005
#include <antlr/TokenStreamIOException.hpp>
00006
#include <antlr/TokenStreamRecognitionException.hpp>
00007
#include <antlr/CharStreamException.hpp>
00008
#include <antlr/CharStreamIOException.hpp>
00009
#include <antlr/NoViableAltForCharException.hpp>
00010
00011
#line 1 "pascal.g"
00012
#line 13 "PascalLexer.cpp"
00013 PascalLexer::PascalLexer(
ANTLR_USE_NAMESPACE(std)istream& in)
00014 :
ANTLR_USE_NAMESPACE(antlr)
CharScanner(new
ANTLR_USE_NAMESPACE(antlr)
CharBuffer(in),false)
00015 {
00016
initLiterals();
00017 }
00018
00019 PascalLexer::PascalLexer(
ANTLR_USE_NAMESPACE(antlr)
InputBuffer& ib)
00020 :
ANTLR_USE_NAMESPACE(antlr)
CharScanner(ib,false)
00021 {
00022
initLiterals();
00023 }
00024
00025 PascalLexer::PascalLexer(
const ANTLR_USE_NAMESPACE(antlr)
LexerSharedInputState& state)
00026 :
ANTLR_USE_NAMESPACE(antlr)
CharScanner(state,false)
00027 {
00028
initLiterals();
00029 }
00030
00031 void PascalLexer::initLiterals()
00032 {
00033 literals[
"until"] = 146;
00034 literals[
"xor"] = 123;
00035 literals[
"abstract"] = 99;
00036 literals[
"shortint"] = 69;
00037 literals[
"with"] = 150;
00038 literals[
"packed"] = 91;
00039 literals[
"inherited"] = 172;
00040 literals[
"break"] = 168;
00041 literals[
"smallint"] = 70;
00042 literals[
"safecall"] = 64;
00043 literals[
"constructor"] = 102;
00044 literals[
"continue"] = 169;
00045 literals[
"uses"] = 30;
00046 literals[
"for"] = 147;
00047 literals[
"else"] = 142;
00048 literals[
"is"] = 119;
00049 literals[
"of"] = 51;
00050 literals[
"and"] = 128;
00051 literals[
"integer"] = 68;
00052 literals[
"byte"] = 73;
00053 literals[
"nil"] = 161;
00054 literals[
"begin"] = 34;
00055 literals[
"interface"] = 32;
00056 literals[
"as"] = 165;
00057 literals[
"div"] = 126;
00058 literals[
"write"] = 110;
00059 literals[
"qword"] = 76;
00060 literals[
"procedure"] = 47;
00061 literals[
"shl"] = 129;
00062 literals[
"var"] = 45;
00063 literals[
"private"] = 100;
00064 literals[
"function"] = 49;
00065 literals[
"unit"] = 31;
00066 literals[
"downto"] = 149;
00067 literals[
"name"] = 29;
00068 literals[
"resourcestring"] = 42;
00069 literals[
"register"] = 57;
00070 literals[
"popstack"] = 61;
00071 literals[
"label"] = 40;
00072 literals[
"try"] = 155;
00073 literals[
"raise"] = 154;
00074 literals[
"not"] = 131;
00075 literals[
"record"] = 92;
00076 literals[
"forward"] = 48;
00077 literals[
"in"] = 118;
00078 literals[
"except"] = 156;
00079 literals[
"file"] = 95;
00080 literals[
"operator"] = 153;
00081 literals[
"pascal"] = 58;
00082 literals[
"finalization"] = 39;
00083 literals[
"cdecl"] = 59;
00084 literals[
"extended"] = 86;
00085 literals[
"external"] = 52;
00086 literals[
"destructor"] = 103;
00087 literals[
"real"] = 83;
00088 literals[
"virtual"] = 98;
00089 literals[
"chr"] = 160;
00090 literals[
"near"] = 65;
00091 literals[
"object"] = 97;
00092 literals[
"public"] = 53;
00093 literals[
"repeat"] = 145;
00094 literals[
"library"] = 23;
00095 literals[
"false"] = 133;
00096 literals[
"longint"] = 71;
00097 literals[
"saveregisters"] = 62;
00098 literals[
"to"] = 148;
00099 literals[
"asm"] = 166;
00100 literals[
"case"] = 93;
00101 literals[
"export"] = 56;
00102 literals[
"true"] = 132;
00103 literals[
"do"] = 144;
00104 literals[
"stdcall"] = 60;
00105 literals[
"program"] = 35;
00106 literals[
"absolute"] = 164;
00107 literals[
"override"] = 105;
00108 literals[
"then"] = 141;
00109 literals[
"set"] = 94;
00110 literals[
"protected"] = 101;
00111 literals[
"or"] = 122;
00112 literals[
"word"] = 74;
00113 literals[
"finally"] = 157;
00114 literals[
"char"] = 80;
00115 literals[
"if"] = 140;
00116 literals[
"far"] = 66;
00117 literals[
"const"] = 41;
00118 literals[
"index"] = 28;
00119 literals[
"assembler"] = 167;
00120 literals[
"cardinal"] = 75;
00121 literals[
"string"] = 88;
00122 literals[
"dispose"] = 170;
00123 literals[
"read"] = 109;
00124 literals[
"default"] = 111;
00125 literals[
"new"] = 173;
00126 literals[
"array"] = 50;
00127 literals[
"self"] = 174;
00128 literals[
"end"] = 25;
00129 literals[
"single"] = 84;
00130 literals[
"property"] = 108;
00131 literals[
"mod"] = 127;
00132 literals[
"goto"] = 139;
00133 literals[
"on"] = 158;
00134 literals[
"comp"] = 87;
00135 literals[
"initialization"] = 38;
00136 literals[
"class"] = 104;
00137 literals[
"int64"] = 72;
00138 literals[
"published"] = 107;
00139 literals[
"nodefault"] = 112;
00140 literals[
"inline"] = 63;
00141 literals[
"while"] = 143;
00142 literals[
"boolean"] = 77;
00143 literals[
"type"] = 44;
00144 literals[
"double"] = 85;
00145 literals[
"implementation"] = 33;
00146 literals[
"exports"] = 26;
00147 literals[
"alias"] = 54;
00148 literals[
"exit"] = 171;
00149 literals[
"shr"] = 130;
00150 }
00151
00152 ANTLR_USE_NAMESPACE(antlr)
RefToken PascalLexer::nextToken()
00153 {
00154
ANTLR_USE_NAMESPACE(antlr)
RefToken theRetToken;
00155
for (;;) {
00156
ANTLR_USE_NAMESPACE(antlr)
RefToken theRetToken;
00157
int _ttype =
ANTLR_USE_NAMESPACE(antlr)Token::INVALID_TYPE;
00158 resetText();
00159
try {
00160
switch ( LA(1)) {
00161
case static_cast<unsigned char>(
','):
00162 {
00163 mCOMMA(
true);
00164 theRetToken=_returnToken;
00165
break;
00166 }
00167
case static_cast<unsigned char>(
';'):
00168 {
00169 mSEMI(
true);
00170 theRetToken=_returnToken;
00171
break;
00172 }
00173
case static_cast<unsigned char>(
'='):
00174 {
00175 mEQUAL(
true);
00176 theRetToken=_returnToken;
00177
break;
00178 }
00179
case static_cast<unsigned char>(
')'):
00180 {
00181 mRPAREN(
true);
00182 theRetToken=_returnToken;
00183
break;
00184 }
00185
case static_cast<unsigned char>(
'['):
00186 {
00187 mLBRACK(
true);
00188 theRetToken=_returnToken;
00189
break;
00190 }
00191
case static_cast<unsigned char>(
']'):
00192 {
00193 mRBRACK(
true);
00194 theRetToken=_returnToken;
00195
break;
00196 }
00197
case static_cast<unsigned char>(
'^'):
00198 {
00199 mPOINTER(
true);
00200 theRetToken=_returnToken;
00201
break;
00202 }
00203
case static_cast<unsigned char>(
'@'):
00204 {
00205 mAT(
true);
00206 theRetToken=_returnToken;
00207
break;
00208 }
00209
case static_cast<unsigned char>(
'}'):
00210 {
00211 mRCURLY(
true);
00212 theRetToken=_returnToken;
00213
break;
00214 }
00215
case static_cast<unsigned char>(
'\t'):
00216
case static_cast<unsigned char>(
'\n'):
00217
case static_cast<unsigned char>('\14'):
00218
case static_cast<unsigned char>(
'\r'):
00219
case static_cast<unsigned char>(
' '):
00220 {
00221 mWS(
true);
00222 theRetToken=_returnToken;
00223
break;
00224 }
00225
case static_cast<unsigned char>(
'a'):
00226
case static_cast<unsigned char>(
'b'):
00227
case static_cast<unsigned char>(
'c'):
00228
case static_cast<unsigned char>(
'd'):
00229
case static_cast<unsigned char>(
'e'):
00230
case static_cast<unsigned char>(
'f'):
00231
case static_cast<unsigned char>(
'g'):
00232
case static_cast<unsigned char>(
'h'):
00233
case static_cast<unsigned char>(
'i'):
00234
case static_cast<unsigned char>(
'j'):
00235
case static_cast<unsigned char>(
'k'):
00236
case static_cast<unsigned char>(
'l'):
00237
case static_cast<unsigned char>(
'm'):
00238
case static_cast<unsigned char>(
'n'):
00239
case static_cast<unsigned char>(
'o'):
00240
case static_cast<unsigned char>(
'p'):
00241
case static_cast<unsigned char>(
'q'):
00242
case static_cast<unsigned char>(
'r'):
00243
case static_cast<unsigned char>(
's'):
00244
case static_cast<unsigned char>(
't'):
00245
case static_cast<unsigned char>(
'u'):
00246
case static_cast<unsigned char>(
'v'):
00247
case static_cast<unsigned char>(
'w'):
00248
case static_cast<unsigned char>(
'x'):
00249
case static_cast<unsigned char>(
'y'):
00250
case static_cast<unsigned char>(
'z'):
00251 {
00252 mIDENT(
true);
00253 theRetToken=_returnToken;
00254
break;
00255 }
00256
case static_cast<unsigned char>(
'\''):
00257 {
00258 mSTRING_LITERAL(
true);
00259 theRetToken=_returnToken;
00260
break;
00261 }
00262
case static_cast<unsigned char>(
'0'):
00263
case static_cast<unsigned char>(
'1'):
00264
case static_cast<unsigned char>(
'2'):
00265
case static_cast<unsigned char>(
'3'):
00266
case static_cast<unsigned char>(
'4'):
00267
case static_cast<unsigned char>(
'5'):
00268
case static_cast<unsigned char>(
'6'):
00269
case static_cast<unsigned char>(
'7'):
00270
case static_cast<unsigned char>(
'8'):
00271
case static_cast<unsigned char>(
'9'):
00272 {
00273 mNUM_INT(
true);
00274 theRetToken=_returnToken;
00275
break;
00276 }
00277
default:
00278
if ((LA(1) == static_cast<unsigned char>(
':')) && (LA(2) == static_cast<unsigned char>(
'='))) {
00279 mASSIGN(
true);
00280 theRetToken=_returnToken;
00281 }
00282
else if ((LA(1) == static_cast<unsigned char>(
'<')) && (LA(2) == static_cast<unsigned char>(
'>'))) {
00283 mNOT_EQUAL(
true);
00284 theRetToken=_returnToken;
00285 }
00286
else if ((LA(1) == static_cast<unsigned char>(
'<')) && (LA(2) == static_cast<unsigned char>(
'='))) {
00287 mLE(
true);
00288 theRetToken=_returnToken;
00289 }
00290
else if ((LA(1) == static_cast<unsigned char>(
'>')) && (LA(2) == static_cast<unsigned char>(
'='))) {
00291 mGE(
true);
00292 theRetToken=_returnToken;
00293 }
00294
else if ((LA(1) == static_cast<unsigned char>(
'(')) && (LA(2) == static_cast<unsigned char>(
'.'))) {
00295 mLBRACK2(
true);
00296 theRetToken=_returnToken;
00297 }
00298
else if ((LA(1) == static_cast<unsigned char>(
'.')) && (LA(2) == static_cast<unsigned char>(
')'))) {
00299 mRBRACK2(
true);
00300 theRetToken=_returnToken;
00301 }
00302
else if ((LA(1) == static_cast<unsigned char>(
'+')) && (LA(2) == static_cast<unsigned char>(
'='))) {
00303 mPLUSEQ(
true);
00304 theRetToken=_returnToken;
00305 }
00306
else if ((LA(1) == static_cast<unsigned char>(
'-')) && (LA(2) == static_cast<unsigned char>(
'='))) {
00307 mMINUSEQ(
true);
00308 theRetToken=_returnToken;
00309 }
00310
else if ((LA(1) == static_cast<unsigned char>(
'*')) && (LA(2) == static_cast<unsigned char>(
'='))) {
00311 mSTAREQ(
true);
00312 theRetToken=_returnToken;
00313 }
00314
else if ((LA(1) == static_cast<unsigned char>(
'/')) && (LA(2) == static_cast<unsigned char>(
'='))) {
00315 mSLASHQE(
true);
00316 theRetToken=_returnToken;
00317 }
00318
else if ((LA(1) == static_cast<unsigned char>(
'(')) && (LA(2) == static_cast<unsigned char>(
'*'))) {
00319 mCOMMENT_1(
true);
00320 theRetToken=_returnToken;
00321 }
00322
else if ((LA(1) == static_cast<unsigned char>(
'{')) && ((LA(2) >= static_cast<unsigned char>(
'\0') && LA(2) <= static_cast<unsigned char>('\377')))) {
00323 mCOMMENT_2(
true);
00324 theRetToken=_returnToken;
00325 }
00326
else if ((LA(1) == static_cast<unsigned char>(
'/')) && (LA(2) == static_cast<unsigned char>(
'/'))) {
00327 mCOMMENT_3(
true);
00328 theRetToken=_returnToken;
00329 }
00330
else if ((LA(1) == static_cast<unsigned char>(
'+')) && (
true)) {
00331 mPLUS(
true);
00332 theRetToken=_returnToken;
00333 }
00334
else if ((LA(1) == static_cast<unsigned char>(
'-')) && (
true)) {
00335 mMINUS(
true);
00336 theRetToken=_returnToken;
00337 }
00338
else if ((LA(1) == static_cast<unsigned char>(
'*')) && (
true)) {
00339 mSTAR(
true);
00340 theRetToken=_returnToken;
00341 }
00342
else if ((LA(1) == static_cast<unsigned char>(
'/')) && (
true)) {
00343 mSLASH(
true);
00344 theRetToken=_returnToken;
00345 }
00346
else if ((LA(1) == static_cast<unsigned char>(
':')) && (
true)) {
00347 mCOLON(
true);
00348 theRetToken=_returnToken;
00349 }
00350
else if ((LA(1) == static_cast<unsigned char>(
'<')) && (
true)) {
00351 mLTH(
true);
00352 theRetToken=_returnToken;
00353 }
00354
else if ((LA(1) == static_cast<unsigned char>(
'>')) && (
true)) {
00355 mGT(
true);
00356 theRetToken=_returnToken;
00357 }
00358
else if ((LA(1) == static_cast<unsigned char>(
'(')) && (
true)) {
00359 mLPAREN(
true);
00360 theRetToken=_returnToken;
00361 }
00362
else if ((LA(1) == static_cast<unsigned char>(
'.')) && (
true)) {
00363 mDOT(
true);
00364 theRetToken=_returnToken;
00365 }
00366
else if ((LA(1) == static_cast<unsigned char>(
'{')) && (
true)) {
00367 mLCURLY(
true);
00368 theRetToken=_returnToken;
00369 }
00370
else {
00371
if (LA(1)==EOF_CHAR)
00372 {
00373 uponEOF();
00374 _returnToken = makeToken(
ANTLR_USE_NAMESPACE(antlr)Token::EOF_TYPE);
00375 }
00376
else {
throw ANTLR_USE_NAMESPACE(antlr)
NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
00377 }
00378 }
00379
if ( !_returnToken )
00380
goto tryAgain;
00381
00382 _ttype = _returnToken->getType();
00383 _returnToken->setType(_ttype);
00384
return _returnToken;
00385 }
00386
catch (
ANTLR_USE_NAMESPACE(antlr)
RecognitionException& e) {
00387
throw ANTLR_USE_NAMESPACE(antlr)
TokenStreamRecognitionException(e);
00388 }
00389
catch (
ANTLR_USE_NAMESPACE(antlr)
CharStreamIOException& csie) {
00390
throw ANTLR_USE_NAMESPACE(antlr)
TokenStreamIOException(csie.io);
00391 }
00392
catch (
ANTLR_USE_NAMESPACE(antlr)
CharStreamException& cse) {
00393
throw ANTLR_USE_NAMESPACE(antlr)
TokenStreamException(cse.getMessage());
00394 }
00395 tryAgain:;
00396 }
00397 }
00398
00399 void PascalLexer::mPLUS(
bool _createToken) {
00400
int _ttype;
ANTLR_USE_NAMESPACE(antlr)
RefToken _token;
int _begin=
text.length();
00401 _ttype = PLUS;
00402
int _saveIndex;
00403
00404 match(static_cast<unsigned char>(
'+'));
00405
if ( _createToken && _token==
ANTLR_USE_NAMESPACE(antlr)
nullToken && _ttype!=
ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
00406 _token = makeToken(_ttype);
00407 _token->setText(
text.substr(_begin,
text.length()-_begin));
00408 }
00409 _returnToken = _token;
00410 _saveIndex=0;
00411 }
00412
00413 void PascalLexer::mMINUS(
bool _createToken) {
00414
int _ttype;
ANTLR_USE_NAMESPACE(antlr)
RefToken _token;
int _begin=
text.length();
00415 _ttype = MINUS;
00416
int _saveIndex;
00417
00418 match(static_cast<unsigned char>(
'-'));
00419
if ( _createToken && _token==
ANTLR_USE_NAMESPACE(antlr)
nullToken && _ttype!=
ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
00420 _token = makeToken(_ttype);
00421 _token->setText(
text.substr(_begin,
text.length()-_begin));
00422 }
00423 _returnToken = _token;
00424 _saveIndex=0;
00425 }
00426
00427 void PascalLexer::mSTAR(
bool _createToken) {
00428
int _ttype;
ANTLR_USE_NAMESPACE(antlr)
RefToken _token;
int _begin=
text.length();
00429 _ttype = STAR;
00430
int _saveIndex;
00431
00432 match(static_cast<unsigned char>(
'*'));
00433
if ( _createToken && _token==
ANTLR_USE_NAMESPACE(antlr)
nullToken && _ttype!=
ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
00434 _token = makeToken(_ttype);
00435 _token->setText(
text.substr(_begin,
text.length()-_begin));
00436 }
00437 _returnToken = _token;
00438 _saveIndex=0;
00439 }
00440
00441 void PascalLexer::mSLASH(
bool _createToken) {
00442
int _ttype;
ANTLR_USE_NAMESPACE(antlr)
RefToken _token;
int _begin=
text.length();
00443 _ttype = SLASH;
00444
int _saveIndex;
00445
00446 match(static_cast<unsigned char>(
'/'));
00447
if ( _createToken && _token==
ANTLR_USE_NAMESPACE(antlr)
nullToken && _ttype!=
ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
00448 _token = makeToken(_ttype);
00449 _token->setText(
text.substr(_begin,
text.length()-_begin));
00450 }
00451 _returnToken = _token;
00452 _saveIndex=0;
00453 }
00454
00455 void PascalLexer::mASSIGN(
bool _createToken) {
00456
int _ttype;
ANTLR_USE_NAMESPACE(antlr)
RefToken _token;
int _begin=
text.length();
00457 _ttype = ASSIGN;
00458
int _saveIndex;
00459
00460 match(
":=");
00461
if ( _createToken && _token==
ANTLR_USE_NAMESPACE(antlr)
nullToken && _ttype!=
ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
00462 _token = makeToken(_ttype);
00463 _token->setText(
text.substr(_begin,
text.length()-_begin));
00464 }
00465 _returnToken = _token;
00466 _saveIndex=0;
00467 }
00468
00469 void PascalLexer::mCOMMA(
bool _createToken) {
00470
int _ttype;
ANTLR_USE_NAMESPACE(antlr)
RefToken _token;
int _begin=
text.length();
00471 _ttype = COMMA;
00472
int _saveIndex;
00473
00474 match(static_cast<unsigned char>(
','));
00475
if ( _createToken && _token==
ANTLR_USE_NAMESPACE(antlr)
nullToken && _ttype!=
ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
00476 _token = makeToken(_ttype);
00477 _token->setText(
text.substr(_begin,
text.length()-_begin));
00478 }
00479 _returnToken = _token;
00480 _saveIndex=0;
00481 }
00482
00483 void PascalLexer::mSEMI(
bool _createToken) {
00484
int _ttype;
ANTLR_USE_NAMESPACE(antlr)
RefToken _token;
int _begin=
text.length();
00485 _ttype = SEMI;
00486
int _saveIndex;
00487
00488 match(static_cast<unsigned char>(
';'));
00489
if ( _createToken && _token==
ANTLR_USE_NAMESPACE(antlr)
nullToken && _ttype!=
ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
00490 _token = makeToken(_ttype);
00491 _token->setText(
text.substr(_begin,
text.length()-_begin));
00492 }
00493 _returnToken = _token;
00494 _saveIndex=0;
00495 }
00496
00497 void PascalLexer::mCOLON(
bool _createToken) {
00498
int _ttype;
ANTLR_USE_NAMESPACE(antlr)
RefToken _token;
int _begin=
text.length();
00499 _ttype = COLON;
00500
int _saveIndex;
00501
00502 match(static_cast<unsigned char>(
':'));
00503
if ( _createToken && _token==
ANTLR_USE_NAMESPACE(antlr)
nullToken && _ttype!=
ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
00504 _token = makeToken(_ttype);
00505 _token->setText(
text.substr(_begin,
text.length()-_begin));
00506 }
00507 _returnToken = _token;
00508 _saveIndex=0;
00509 }
00510
00511 void PascalLexer::mEQUAL(
bool _createToken) {
00512
int _ttype;
ANTLR_USE_NAMESPACE(antlr)
RefToken _token;
int _begin=
text.length();
00513 _ttype = EQUAL;
00514
int _saveIndex;
00515
00516 match(static_cast<unsigned char>(
'='));
00517
if ( _createToken && _token==
ANTLR_USE_NAMESPACE(antlr)
nullToken && _ttype!=
ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
00518 _token = makeToken(_ttype);
00519 _token->setText(
text.substr(_begin,
text.length()-_begin));
00520 }
00521 _returnToken = _token;
00522 _saveIndex=0;
00523 }
00524
00525 void PascalLexer::mNOT_EQUAL(
bool _createToken) {
00526
int _ttype;
ANTLR_USE_NAMESPACE(antlr)
RefToken _token;
int _begin=
text.length();
00527 _ttype = NOT_EQUAL;
00528
int _saveIndex;
00529
00530 match(
"<>");
00531
if ( _createToken && _token==
ANTLR_USE_NAMESPACE(antlr)
nullToken && _ttype!=
ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
00532 _token = makeToken(_ttype);
00533 _token->setText(
text.substr(_begin,
text.length()-_begin));
00534 }
00535 _returnToken = _token;
00536 _saveIndex=0;
00537 }
00538
00539 void PascalLexer::mLTH(
bool _createToken) {
00540
int _ttype;
ANTLR_USE_NAMESPACE(antlr)
RefToken _token;
int _begin=
text.length();
00541 _ttype = LTH;
00542
int _saveIndex;
00543
00544 match(static_cast<unsigned char>(
'<'));
00545
if ( _createToken && _token==
ANTLR_USE_NAMESPACE(antlr)
nullToken && _ttype!=
ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
00546 _token = makeToken(_ttype);
00547 _token->setText(
text.substr(_begin,
text.length()-_begin));
00548 }
00549 _returnToken = _token;
00550 _saveIndex=0;
00551 }
00552
00553 void PascalLexer::mLE(
bool _createToken) {
00554
int _ttype;
ANTLR_USE_NAMESPACE(antlr)
RefToken _token;
int _begin=
text.length();
00555 _ttype = LE;
00556
int _saveIndex;
00557
00558 match(
"<=");
00559
if ( _createToken && _token==
ANTLR_USE_NAMESPACE(antlr)
nullToken && _ttype!=
ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
00560 _token = makeToken(_ttype);
00561 _token->setText(
text.substr(_begin,
text.length()-_begin));
00562 }
00563 _returnToken = _token;
00564 _saveIndex=0;
00565 }
00566
00567 void PascalLexer::mGE(
bool _createToken) {
00568
int _ttype;
ANTLR_USE_NAMESPACE(antlr)
RefToken _token;
int _begin=
text.length();
00569 _ttype = GE;
00570
int _saveIndex;
00571
00572 match(
">=");
00573
if ( _createToken && _token==
ANTLR_USE_NAMESPACE(antlr)
nullToken && _ttype!=
ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
00574 _token = makeToken(_ttype);
00575 _token->setText(
text.substr(_begin,
text.length()-_begin));
00576 }
00577 _returnToken = _token;
00578 _saveIndex=0;
00579 }
00580
00581 void PascalLexer::mGT(
bool _createToken) {
00582
int _ttype;
ANTLR_USE_NAMESPACE(antlr)
RefToken _token;
int _begin=
text.length();
00583 _ttype = GT;
00584
int _saveIndex;
00585
00586 match(static_cast<unsigned char>(
'>'));
00587
if ( _createToken && _token==
ANTLR_USE_NAMESPACE(antlr)
nullToken && _ttype!=
ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
00588 _token = makeToken(_ttype);
00589 _token->setText(
text.substr(_begin,
text.length()-_begin));
00590 }
00591 _returnToken = _token;
00592 _saveIndex=0;
00593 }
00594
00595 void PascalLexer::mLPAREN(
bool _createToken) {
00596
int _ttype;
ANTLR_USE_NAMESPACE(antlr)
RefToken _token;
int _begin=
text.length();
00597 _ttype = LPAREN;
00598
int _saveIndex;
00599
00600 match(static_cast<unsigned char>(
'('));
00601
if ( _createToken && _token==
ANTLR_USE_NAMESPACE(antlr)
nullToken && _ttype!=
ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
00602 _token = makeToken(_ttype);
00603 _token->setText(
text.substr(_begin,
text.length()-_begin));
00604 }
00605 _returnToken = _token;
00606 _saveIndex=0;
00607 }
00608
00609 void PascalLexer::mRPAREN(
bool _createToken) {
00610
int _ttype;
ANTLR_USE_NAMESPACE(antlr)
RefToken _token;
int _begin=
text.length();
00611 _ttype = RPAREN;
00612
int _saveIndex;
00613
00614 match(static_cast<unsigned char>(
')'));
00615
if ( _createToken && _token==
ANTLR_USE_NAMESPACE(antlr)
nullToken && _ttype!=
ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
00616 _token = makeToken(_ttype);
00617 _token->setText(
text.substr(_begin,
text.length()-_begin));
00618 }
00619 _returnToken = _token;
00620 _saveIndex=0;
00621 }
00622
00623 void PascalLexer::mLBRACK(
bool _createToken) {
00624
int _ttype;
ANTLR_USE_NAMESPACE(antlr)
RefToken _token;
int _begin=
text.length();
00625 _ttype = LBRACK;
00626
int _saveIndex;
00627
00628 match(static_cast<unsigned char>(
'['));
00629
if ( _createToken && _token==
ANTLR_USE_NAMESPACE(antlr)
nullToken && _ttype!=
ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
00630 _token = makeToken(_ttype);
00631 _token->setText(
text.substr(_begin,
text.length()-_begin));
00632 }
00633 _returnToken = _token;
00634 _saveIndex=0;
00635 }
00636
00637 void PascalLexer::mLBRACK2(
bool _createToken) {
00638
int _ttype;
ANTLR_USE_NAMESPACE(antlr)
RefToken _token;
int _begin=
text.length();
00639 _ttype = LBRACK2;
00640
int _saveIndex;
00641
00642 match(
"(.");
00643
if ( _createToken && _token==
ANTLR_USE_NAMESPACE(antlr)
nullToken && _ttype!=
ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
00644 _token = makeToken(_ttype);
00645 _token->setText(
text.substr(_begin,
text.length()-_begin));
00646 }
00647 _returnToken = _token;
00648 _saveIndex=0;
00649 }
00650
00651 void PascalLexer::mRBRACK(
bool _createToken) {
00652
int _ttype;
ANTLR_USE_NAMESPACE(antlr)
RefToken _token;
int _begin=
text.length();
00653 _ttype = RBRACK;
00654
int _saveIndex;
00655
00656 match(static_cast<unsigned char>(
']'));
00657
if ( _createToken && _token==
ANTLR_USE_NAMESPACE(antlr)
nullToken && _ttype!=
ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
00658 _token = makeToken(_ttype);
00659 _token->setText(
text.substr(_begin,
text.length()-_begin));
00660 }
00661 _returnToken = _token;
00662 _saveIndex=0;
00663 }
00664
00665 void PascalLexer::mRBRACK2(
bool _createToken) {
00666
int _ttype;
ANTLR_USE_NAMESPACE(antlr)
RefToken _token;
int _begin=
text.length();
00667 _ttype = RBRACK2;
00668
int _saveIndex;
00669
00670 match(
".)");
00671
if ( _createToken && _token==
ANTLR_USE_NAMESPACE(antlr)
nullToken && _ttype!=
ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
00672 _token = makeToken(_ttype);
00673 _token->setText(
text.substr(_begin,
text.length()-_begin));
00674 }
00675 _returnToken = _token;
00676 _saveIndex=0;
00677 }
00678
00679 void PascalLexer::mPOINTER(
bool _createToken) {
00680
int _ttype;
ANTLR_USE_NAMESPACE(antlr)
RefToken _token;
int _begin=
text.length();
00681 _ttype = POINTER;
00682
int _saveIndex;
00683
00684 match(static_cast<unsigned char>(
'^'));
00685
if ( _createToken && _token==
ANTLR_USE_NAMESPACE(antlr)
nullToken && _ttype!=
ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
00686 _token = makeToken(_ttype);
00687 _token->setText(
text.substr(_begin,
text.length()-_begin));
00688 }
00689 _returnToken = _token;
00690 _saveIndex=0;
00691 }
00692
00693 void PascalLexer::mAT(
bool _createToken) {
00694
int _ttype;
ANTLR_USE_NAMESPACE(antlr)
RefToken _token;
int _begin=
text.length();
00695 _ttype = AT;
00696
int _saveIndex;
00697
00698 match(static_cast<unsigned char>(
'@'));
00699
if ( _createToken && _token==
ANTLR_USE_NAMESPACE(antlr)
nullToken && _ttype!=
ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
00700 _token = makeToken(_ttype);
00701 _token->setText(
text.substr(_begin,
text.length()-_begin));
00702 }
00703 _returnToken = _token;
00704 _saveIndex=0;
00705 }
00706
00707 void PascalLexer::mDOT(
bool _createToken) {
00708
int _ttype;
ANTLR_USE_NAMESPACE(antlr)
RefToken _token;
int _begin=
text.length();
00709 _ttype = DOT;
00710
int _saveIndex;
00711
00712 match(static_cast<unsigned char>(
'.'));
00713 {
00714
if ((LA(1) == static_cast<unsigned char>(
'.'))) {
00715 match(static_cast<unsigned char>(
'.'));
00716
#line 1124 "pascal.g"
00717
_ttype = DOTDOT;
00718
#line 719 "PascalLexer.cpp"
00719
}
00720
else {
00721 }
00722
00723 }
00724
if ( _createToken && _token==
ANTLR_USE_NAMESPACE(antlr)
nullToken && _ttype!=
ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
00725 _token = makeToken(_ttype);
00726 _token->setText(
text.substr(_begin,
text.length()-_begin));
00727 }
00728 _returnToken = _token;
00729 _saveIndex=0;
00730 }
00731
00732 void PascalLexer::mLCURLY(
bool _createToken) {
00733
int _ttype;
ANTLR_USE_NAMESPACE(antlr)
RefToken _token;
int _begin=
text.length();
00734 _ttype = LCURLY;
00735
int _saveIndex;
00736
00737 match(
"{");
00738
if ( _createToken && _token==
ANTLR_USE_NAMESPACE(antlr)
nullToken && _ttype!=
ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
00739 _token = makeToken(_ttype);
00740 _token->setText(
text.substr(_begin,
text.length()-_begin));
00741 }
00742 _returnToken = _token;
00743 _saveIndex=0;
00744 }
00745
00746 void PascalLexer::mRCURLY(
bool _createToken) {
00747
int _ttype;
ANTLR_USE_NAMESPACE(antlr)
RefToken _token;
int _begin=
text.length();
00748 _ttype = RCURLY;
00749
int _saveIndex;
00750
00751 match(
"}");
00752
if ( _createToken && _token==
ANTLR_USE_NAMESPACE(antlr)
nullToken && _ttype!=
ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
00753 _token = makeToken(_ttype);
00754 _token->setText(
text.substr(_begin,
text.length()-_begin));
00755 }
00756 _returnToken = _token;
00757 _saveIndex=0;
00758 }
00759
00760 void PascalLexer::mPLUSEQ(
bool _createToken) {
00761
int _ttype;
ANTLR_USE_NAMESPACE(antlr)
RefToken _token;
int _begin=
text.length();
00762 _ttype = PLUSEQ;
00763
int _saveIndex;
00764
00765 match(
"+=");
00766
if ( _createToken && _token==
ANTLR_USE_NAMESPACE(antlr)
nullToken && _ttype!=
ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
00767 _token = makeToken(_ttype);
00768 _token->setText(
text.substr(_begin,
text.length()-_begin));
00769 }
00770 _returnToken = _token;
00771 _saveIndex=0;
00772 }
00773
00774 void PascalLexer::mMINUSEQ(
bool _createToken) {
00775
int _ttype;
ANTLR_USE_NAMESPACE(antlr)
RefToken _token;
int _begin=
text.length();
00776 _ttype = MINUSEQ;
00777
int _saveIndex;
00778
00779 match(
"-=");
00780
if ( _createToken && _token==
ANTLR_USE_NAMESPACE(antlr)
nullToken && _ttype!=
ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
00781 _token = makeToken(_ttype);
00782 _token->setText(
text.substr(_begin,
text.length()-_begin));
00783 }
00784 _returnToken = _token;
00785 _saveIndex=0;
00786 }
00787
00788 void PascalLexer::mSTAREQ(
bool _createToken) {
00789
int _ttype;
ANTLR_USE_NAMESPACE(antlr)
RefToken _token;
int _begin=
text.length();
00790 _ttype = STAREQ;
00791
int _saveIndex;
00792
00793 match(
"*=");
00794
if ( _createToken && _token==
ANTLR_USE_NAMESPACE(antlr)
nullToken && _ttype!=
ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
00795 _token = makeToken(_ttype);
00796 _token->setText(
text.substr(_begin,
text.length()-_begin));
00797 }
00798 _returnToken = _token;
00799 _saveIndex=0;
00800 }
00801
00802 void PascalLexer::mSLASHQE(
bool _createToken) {
00803
int _ttype;
ANTLR_USE_NAMESPACE(antlr)
RefToken _token;
int _begin=
text.length();
00804 _ttype = SLASHQE;
00805
int _saveIndex;
00806
00807 match(
"/=");
00808
if ( _createToken && _token==
ANTLR_USE_NAMESPACE(antlr)
nullToken && _ttype!=
ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
00809 _token = makeToken(_ttype);
00810 _token->setText(
text.substr(_begin,
text.length()-_begin));
00811 }
00812 _returnToken = _token;
00813 _saveIndex=0;
00814 }
00815
00816 void PascalLexer::mWS(
bool _createToken) {
00817
int _ttype;
ANTLR_USE_NAMESPACE(antlr)
RefToken _token;
int _begin=
text.length();
00818 _ttype = WS;
00819
int _saveIndex;
00820
00821 {
00822
switch ( LA(1)) {
00823
case static_cast<unsigned char>(
' '):
00824 {
00825 match(static_cast<unsigned char>(
' '));
00826
break;
00827 }
00828
case static_cast<unsigned char>(
'\t'):
00829 {
00830 match(static_cast<unsigned char>(
'\t'));
00831
break;
00832 }
00833
case static_cast<unsigned char>('\14'):
00834 {
00835 match(static_cast<unsigned char>('\14'));
00836
break;
00837 }
00838
case static_cast<unsigned char>(
'\n'):
00839
case static_cast<unsigned char>(
'\r'):
00840 {
00841 {
00842
if ((LA(1) == static_cast<unsigned char>(
'\r')) && (LA(2) == static_cast<unsigned char>(
'\n'))) {
00843 match(
"\r\n");
00844 }
00845
else if ((LA(1) == static_cast<unsigned char>(
'\r')) && (
true)) {
00846 match(static_cast<unsigned char>(
'\r'));
00847 }
00848
else if ((LA(1) == static_cast<unsigned char>(
'\n'))) {
00849 match(static_cast<unsigned char>(
'\n'));
00850 }
00851
else {
00852
throw ANTLR_USE_NAMESPACE(antlr)
NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
00853 }
00854
00855 }
00856
#line 1142 "pascal.g"
00857
newline();
00858
#line 859 "PascalLexer.cpp"
00859
break;
00860 }
00861
default:
00862 {
00863
throw ANTLR_USE_NAMESPACE(antlr)
NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
00864 }
00865 }
00866 }
00867
#line 1144 "pascal.g"
00868
_ttype =
ANTLR_USE_NAMESPACE(antlr)Token::SKIP;
00869
#line 870 "PascalLexer.cpp"
00870
if ( _createToken && _token==
ANTLR_USE_NAMESPACE(antlr)
nullToken && _ttype!=
ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
00871 _token = makeToken(_ttype);
00872 _token->setText(
text.substr(_begin,
text.length()-_begin));
00873 }
00874 _returnToken = _token;
00875 _saveIndex=0;
00876 }
00877
00878 void PascalLexer::mCOMMENT_1(
bool _createToken) {
00879
int _ttype;
ANTLR_USE_NAMESPACE(antlr)
RefToken _token;
int _begin=
text.length();
00880 _ttype = COMMENT_1;
00881
int _saveIndex;
00882
00883 match(
"(*");
00884 {
00885
for (;;) {
00886
if ((LA(1) == static_cast<unsigned char>(
'\r')) && (LA(2) == static_cast<unsigned char>(
'\n')) && ((LA(3) >= static_cast<unsigned char>(
'\0') && LA(3) <= static_cast<unsigned char>('\377'))) && ((LA(4) >= static_cast<unsigned char>(
'\0') && LA(4) <= static_cast<unsigned char>('\377')))) {
00887 match(static_cast<unsigned char>(
'\r'));
00888 match(static_cast<unsigned char>(
'\n'));
00889
#line 1152 "pascal.g"
00890
newline();
00891
#line 892 "PascalLexer.cpp"
00892
}
00893
else if (((LA(1) == static_cast<unsigned char>(
'*')) && ((LA(2) >= static_cast<unsigned char>(
'\0') && LA(2) <= static_cast<unsigned char>('\377'))) && ((LA(3) >= static_cast<unsigned char>(
'\0') && LA(3) <= static_cast<unsigned char>('\377'))))&&( LA(2) !=
')' )) {
00894 match(static_cast<unsigned char>(
'*'));
00895 }
00896
else if ((LA(1) == static_cast<unsigned char>(
'\r')) && ((LA(2) >= static_cast<unsigned char>(
'\0') && LA(2) <= static_cast<unsigned char>('\377'))) && ((LA(3) >= static_cast<unsigned char>(
'\0') && LA(3) <= static_cast<unsigned char>('\377'))) && (
true)) {
00897 match(static_cast<unsigned char>(
'\r'));
00898
#line 1153 "pascal.g"
00899
newline();
00900
#line 901 "PascalLexer.cpp"
00901
}
00902
else if ((LA(1) == static_cast<unsigned char>(
'\n'))) {
00903 match(static_cast<unsigned char>(
'\n'));
00904
#line 1154 "pascal.g"
00905
newline();
00906
#line 907 "PascalLexer.cpp"
00907
}
00908
else if ((
_tokenSet_0.member(LA(1)))) {
00909 {
00910 match(
_tokenSet_0);
00911 }
00912 }
00913
else {
00914
goto _loop427;
00915 }
00916
00917 }
00918 _loop427:;
00919 }
00920 match(
"*)");
00921
#line 1158 "pascal.g"
00922
_ttype =
ANTLR_USE_NAMESPACE(antlr)Token::SKIP;
00923
#line 924 "PascalLexer.cpp"
00924
if ( _createToken && _token==
ANTLR_USE_NAMESPACE(antlr)
nullToken && _ttype!=
ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
00925 _token = makeToken(_ttype);
00926 _token->setText(
text.substr(_begin,
text.length()-_begin));
00927 }
00928 _returnToken = _token;
00929 _saveIndex=0;
00930 }
00931
00932 void PascalLexer::mCOMMENT_2(
bool _createToken) {
00933
int _ttype;
ANTLR_USE_NAMESPACE(antlr)
RefToken _token;
int _begin=
text.length();
00934 _ttype = COMMENT_2;
00935
int _saveIndex;
00936
00937 match(static_cast<unsigned char>(
'{'));
00938 {
00939
for (;;) {
00940
if ((LA(1) == static_cast<unsigned char>(
'\r')) && (LA(2) == static_cast<unsigned char>(
'\n')) && ((LA(3) >= static_cast<unsigned char>(
'\0') && LA(3) <= static_cast<unsigned char>('\377'))) && (
true)) {
00941 match(static_cast<unsigned char>(
'\r'));
00942 match(static_cast<unsigned char>(
'\n'));
00943
#line 1164 "pascal.g"
00944
newline();
00945
#line 946 "PascalLexer.cpp"
00946
}
00947
else if ((LA(1) == static_cast<unsigned char>(
'\r')) && ((LA(2) >= static_cast<unsigned char>(
'\0') && LA(2) <= static_cast<unsigned char>('\377'))) && (
true) && (
true)) {
00948 match(static_cast<unsigned char>(
'\r'));
00949
#line 1165 "pascal.g"
00950
newline();
00951
#line 952 "PascalLexer.cpp"
00952
}
00953
else if ((LA(1) == static_cast<unsigned char>(
'\n'))) {
00954 match(static_cast<unsigned char>(
'\n'));
00955
#line 1166 "pascal.g"
00956
newline();
00957
#line 958 "PascalLexer.cpp"
00958
}
00959
else if ((
_tokenSet_1.member(LA(1)))) {
00960 {
00961 match(
_tokenSet_1);
00962 }
00963 }
00964
else {
00965
goto _loop431;
00966 }
00967
00968 }
00969 _loop431:;
00970 }
00971 match(static_cast<unsigned char>(
'}'));
00972
#line 1170 "pascal.g"
00973
_ttype =
ANTLR_USE_NAMESPACE(antlr)Token::SKIP;
00974
#line 975 "PascalLexer.cpp"
00975
if ( _createToken && _token==
ANTLR_USE_NAMESPACE(antlr)
nullToken && _ttype!=
ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
00976 _token = makeToken(_ttype);
00977 _token->setText(
text.substr(_begin,
text.length()-_begin));
00978 }
00979 _returnToken = _token;
00980 _saveIndex=0;
00981 }
00982
00983 void PascalLexer::mCOMMENT_3(
bool _createToken) {
00984
int _ttype;
ANTLR_USE_NAMESPACE(antlr)
RefToken _token;
int _begin=
text.length();
00985 _ttype = COMMENT_3;
00986
int _saveIndex;
00987
00988 match(
"//");
00989 {
00990
for (;;) {
00991
if ((
_tokenSet_2.member(LA(1)))) {
00992 matchNot(static_cast<unsigned char>(
'\n'));
00993 }
00994
else {
00995
goto _loop434;
00996 }
00997
00998 }
00999 _loop434:;
01000 }
01001 match(static_cast<unsigned char>(
'\n'));
01002
#line 1175 "pascal.g"
01003
_ttype =
ANTLR_USE_NAMESPACE(antlr)Token::SKIP;
01004
#line 1005 "PascalLexer.cpp"
01005
if ( _createToken && _token==
ANTLR_USE_NAMESPACE(antlr)
nullToken && _ttype!=
ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
01006 _token = makeToken(_ttype);
01007 _token->setText(
text.substr(_begin,
text.length()-_begin));
01008 }
01009 _returnToken = _token;
01010 _saveIndex=0;
01011 }
01012
01013 void PascalLexer::mIDENT(
bool _createToken) {
01014
int _ttype;
ANTLR_USE_NAMESPACE(antlr)
RefToken _token;
int _begin=
text.length();
01015 _ttype = IDENT;
01016
int _saveIndex;
01017
01018 {
01019 matchRange(static_cast<unsigned char>(
'a'),static_cast<unsigned char>(
'z'));
01020 }
01021 {
01022
for (;;) {
01023
switch ( LA(1)) {
01024
case static_cast<unsigned char>(
'a'):
01025
case static_cast<unsigned char>(
'b'):
01026
case static_cast<unsigned char>(
'c'):
01027
case static_cast<unsigned char>(
'd'):
01028
case static_cast<unsigned char>(
'e'):
01029
case static_cast<unsigned char>(
'f'):
01030
case static_cast<unsigned char>(
'g'):
01031
case static_cast<unsigned char>(
'h'):
01032
case static_cast<unsigned char>(
'i'):
01033
case static_cast<unsigned char>(
'j'):
01034
case static_cast<unsigned char>(
'k'):
01035
case static_cast<unsigned char>(
'l'):
01036
case static_cast<unsigned char>(
'm'):
01037
case static_cast<unsigned char>(
'n'):
01038
case static_cast<unsigned char>(
'o'):
01039
case static_cast<unsigned char>(
'p'):
01040
case static_cast<unsigned char>(
'q'):
01041
case static_cast<unsigned char>(
'r'):
01042
case static_cast<unsigned char>(
's'):
01043
case static_cast<unsigned char>(
't'):
01044
case static_cast<unsigned char>(
'u'):
01045
case static_cast<unsigned char>(
'v'):
01046
case static_cast<unsigned char>(
'w'):
01047
case static_cast<unsigned char>(
'x'):
01048
case static_cast<unsigned char>(
'y'):
01049
case static_cast<unsigned char>(
'z'):
01050 {
01051 matchRange(static_cast<unsigned char>(
'a'),static_cast<unsigned char>(
'z'));
01052
break;
01053 }
01054
case static_cast<unsigned char>(
'0'):
01055
case static_cast<unsigned char>(
'1'):
01056
case static_cast<unsigned char>(
'2'):
01057
case static_cast<unsigned char>(
'3'):
01058
case static_cast<unsigned char>(
'4'):
01059
case static_cast<unsigned char>(
'5'):
01060
case static_cast<unsigned char>(
'6'):
01061
case static_cast<unsigned char>(
'7'):
01062
case static_cast<unsigned char>(
'8'):
01063
case static_cast<unsigned char>(
'9'):
01064 {
01065 matchRange(static_cast<unsigned char>(
'0'),static_cast<unsigned char>(
'9'));
01066
break;
01067 }
01068
case static_cast<unsigned char>(
'_'):
01069 {
01070 match(static_cast<unsigned char>(
'_'));
01071
break;
01072 }
01073
default:
01074 {
01075
goto _loop438;
01076 }
01077 }
01078 }
01079 _loop438:;
01080 }
01081 _ttype = testLiteralsTable(_ttype);
01082
if ( _createToken && _token==
ANTLR_USE_NAMESPACE(antlr)
nullToken && _ttype!=
ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
01083 _token = makeToken(_ttype);
01084 _token->setText(
text.substr(_begin,
text.length()-_begin));
01085 }
01086 _returnToken = _token;
01087 _saveIndex=0;
01088 }
01089
01090 void PascalLexer::mSTRING_LITERAL(
bool _createToken) {
01091
int _ttype;
ANTLR_USE_NAMESPACE(antlr)
RefToken _token;
int _begin=
text.length();
01092 _ttype = STRING_LITERAL;
01093
int _saveIndex;
01094
01095 match(static_cast<unsigned char>(
'\''));
01096 {
01097
for (;;) {
01098
if ((LA(1) == static_cast<unsigned char>(
'\'')) && (LA(2) == static_cast<unsigned char>(
'\''))) {
01099 match(
"\'\'");
01100 }
01101
else if ((
_tokenSet_3.member(LA(1)))) {
01102 {
01103 match(
_tokenSet_3);
01104 }
01105 }
01106
else {
01107
goto _loop442;
01108 }
01109
01110 }
01111 _loop442:;
01112 }
01113 match(static_cast<unsigned char>(
'\''));
01114
if ( _createToken && _token==
ANTLR_USE_NAMESPACE(antlr)
nullToken && _ttype!=
ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
01115 _token = makeToken(_ttype);
01116 _token->setText(
text.substr(_begin,
text.length()-_begin));
01117 }
01118 _returnToken = _token;
01119 _saveIndex=0;
01120 }
01121
01128 void PascalLexer::mNUM_INT(
bool _createToken) {
01129
int _ttype;
ANTLR_USE_NAMESPACE(antlr)
RefToken _token;
int _begin=
text.length();
01130 _ttype = NUM_INT;
01131
int _saveIndex;
01132
01133 {
01134
int _cnt445=0;
01135
for (;;) {
01136
if (((LA(1) >= static_cast<unsigned char>(
'0') && LA(1) <= static_cast<unsigned char>(
'9')))) {
01137 matchRange(static_cast<unsigned char>(
'0'),static_cast<unsigned char>(
'9'));
01138 }
01139
else {
01140
if ( _cnt445>=1 ) {
goto _loop445; }
else {
throw ANTLR_USE_NAMESPACE(antlr)
NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
01141 }
01142
01143 _cnt445++;
01144 }
01145 _loop445:;
01146 }
01147 {
01148
if ((LA(1) == static_cast<unsigned char>(
'e'))) {
01149
mEXPONENT(
false);
01150
#line 1204 "pascal.g"
01151
_ttype = NUM_REAL;
01152
#line 1153 "PascalLexer.cpp"
01153
}
01154
else {
01155 {
01156
if (((LA(1) == static_cast<unsigned char>(
'.')))&&((LA(2)!=
'.')&&(LA(2)!=
')'))) {
01157 match(static_cast<unsigned char>(
'.'));
01158
#line 1201 "pascal.g"
01159
_ttype = NUM_REAL;
01160
#line 1161 "PascalLexer.cpp"
01161
{
01162
int _cnt449=0;
01163
for (;;) {
01164
if (((LA(1) >= static_cast<unsigned char>(
'0') && LA(1) <= static_cast<unsigned char>(
'9')))) {
01165 matchRange(static_cast<unsigned char>(
'0'),static_cast<unsigned char>(
'9'));
01166 }
01167
else {
01168
if ( _cnt449>=1 ) {
goto _loop449; }
else {
throw ANTLR_USE_NAMESPACE(antlr)
NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
01169 }
01170
01171 _cnt449++;
01172 }
01173 _loop449:;
01174 }
01175 {
01176
if ((LA(1) == static_cast<unsigned char>(
'e'))) {
01177
mEXPONENT(
false);
01178 }
01179
else {
01180 }
01181
01182 }
01183 }
01184
else {
01185 }
01186
01187 }
01188 }
01189
01190 }
01191
if ( _createToken && _token==
ANTLR_USE_NAMESPACE(antlr)
nullToken && _ttype!=
ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
01192 _token = makeToken(_ttype);
01193 _token->setText(
text.substr(_begin,
text.length()-_begin));
01194 }
01195 _returnToken = _token;
01196 _saveIndex=0;
01197 }
01198
01199 void PascalLexer::mEXPONENT(
bool _createToken) {
01200
int _ttype;
ANTLR_USE_NAMESPACE(antlr)
RefToken _token;
int _begin=
text.length();
01201 _ttype = EXPONENT;
01202
int _saveIndex;
01203
01204 {
01205 match(static_cast<unsigned char>(
'e'));
01206 }
01207 {
01208
switch ( LA(1)) {
01209
case static_cast<unsigned char>(
'+'):
01210 {
01211 match(static_cast<unsigned char>(
'+'));
01212
break;
01213 }
01214
case static_cast<unsigned char>(
'-'):
01215 {
01216 match(static_cast<unsigned char>(
'-'));
01217
break;
01218 }
01219
case static_cast<unsigned char>(
'0'):
01220
case static_cast<unsigned char>(
'1'):
01221
case static_cast<unsigned char>(
'2'):
01222
case static_cast<unsigned char>(
'3'):
01223
case static_cast<unsigned char>(
'4'):
01224
case static_cast<unsigned char>(
'5'):
01225
case static_cast<unsigned char>(
'6'):
01226
case static_cast<unsigned char>(
'7'):
01227
case static_cast<unsigned char>(
'8'):
01228
case static_cast<unsigned char>(
'9'):
01229 {
01230
break;
01231 }
01232
default:
01233 {
01234
throw ANTLR_USE_NAMESPACE(antlr)
NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
01235 }
01236 }
01237 }
01238 {
01239
int _cnt455=0;
01240
for (;;) {
01241
if (((LA(1) >= static_cast<unsigned char>(
'0') && LA(1) <= static_cast<unsigned char>(
'9')))) {
01242 matchRange(static_cast<unsigned char>(
'0'),static_cast<unsigned char>(
'9'));
01243 }
01244
else {
01245
if ( _cnt455>=1 ) {
goto _loop455; }
else {
throw ANTLR_USE_NAMESPACE(antlr)
NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
01246 }
01247
01248 _cnt455++;
01249 }
01250 _loop455:;
01251 }
01252
if ( _createToken && _token==
ANTLR_USE_NAMESPACE(antlr)
nullToken && _ttype!=
ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
01253 _token = makeToken(_ttype);
01254 _token->setText(
text.substr(_begin,
text.length()-_begin));
01255 }
01256 _returnToken = _token;
01257 _saveIndex=0;
01258 }
01259
01260
01261 const unsigned long PascalLexer::_tokenSet_0_data_[] = { 4294958079UL, 4294966271UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
01262
01263
01264
01265
01266
01267
01268
01269
01270
01271
01272
01273
01274
01275
01276
01277
01278
01279
01280
01281
01282
01283
01284
const ANTLR_USE_NAMESPACE(antlr)
BitSet PascalLexer::_tokenSet_0(_tokenSet_0_data_,16);
01285 const
unsigned long PascalLexer::_tokenSet_1_data_[] = { 4294958079UL, 4294967295UL, 4294967295UL, 3758096383UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
01286
01287
01288
01289
01290
01291
01292
01293
01294
01295
01296
01297
01298
01299
01300
01301
01302
01303
01304
01305
01306
01307
01308
const ANTLR_USE_NAMESPACE(antlr)
BitSet PascalLexer::_tokenSet_1(_tokenSet_1_data_,16);
01309 const
unsigned long PascalLexer::_tokenSet_2_data_[] = { 4294966271UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
01310
01311
01312
01313
01314
01315
01316
01317
01318
01319
01320
01321
01322
01323
01324
01325
01326
01327
01328
01329
01330
01331
01332
const ANTLR_USE_NAMESPACE(antlr)
BitSet PascalLexer::_tokenSet_2(_tokenSet_2_data_,16);
01333 const
unsigned long PascalLexer::_tokenSet_3_data_[] = { 4294967295UL, 4294967167UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
01334
01335
01336
01337
01338
01339
01340
01341
01342
01343
01344
01345
01346
01347
01348
01349
01350
01351
01352
01353
01354
01355
01356
const ANTLR_USE_NAMESPACE(antlr)
BitSet PascalLexer::_tokenSet_3(_tokenSet_3_data_,16);
01357