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