ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/branches/development/src/mdParser/MDLexer.cpp
(Generate patch)

Comparing trunk/src/mdParser/MDLexer.cpp (file contents):
Revision 810 by tim, Wed Dec 14 18:02:28 2005 UTC vs.
Revision 814 by tim, Fri Dec 16 02:57:00 2005 UTC

# Line 149 | Line 149 | ANTLR_USE_NAMESPACE(antlr)RefToken MDLexer::nextToken(
149                                  theRetToken=_returnToken;
150                                  break;
151                          }
152                        case 0x2b /* '+' */ :
153                        case 0x2d /* '-' */ :
154                        case 0x2e /* '.' */ :
155                        case 0x30 /* '0' */ :
156                        case 0x31 /* '1' */ :
157                        case 0x32 /* '2' */ :
158                        case 0x33 /* '3' */ :
159                        case 0x34 /* '4' */ :
160                        case 0x35 /* '5' */ :
161                        case 0x36 /* '6' */ :
162                        case 0x37 /* '7' */ :
163                        case 0x38 /* '8' */ :
164                        case 0x39 /* '9' */ :
165                        {
166                                mNumber(true);
167                                theRetToken=_returnToken;
168                                break;
169                        }
152                          case 0x41 /* 'A' */ :
153                          case 0x42 /* 'B' */ :
154                          case 0x43 /* 'C' */ :
# Line 222 | Line 204 | ANTLR_USE_NAMESPACE(antlr)RefToken MDLexer::nextToken(
204                          case 0x7a /* 'z' */ :
205                          {
206                                  mID(true);
207 +                                theRetToken=_returnToken;
208 +                                break;
209 +                        }
210 +                        case 0x2b /* '+' */ :
211 +                        case 0x2d /* '-' */ :
212 +                        case 0x2e /* '.' */ :
213 +                        case 0x30 /* '0' */ :
214 +                        case 0x31 /* '1' */ :
215 +                        case 0x32 /* '2' */ :
216 +                        case 0x33 /* '3' */ :
217 +                        case 0x34 /* '4' */ :
218 +                        case 0x35 /* '5' */ :
219 +                        case 0x36 /* '6' */ :
220 +                        case 0x37 /* '7' */ :
221 +                        case 0x38 /* '8' */ :
222 +                        case 0x39 /* '9' */ :
223 +                        {
224 +                                mNUM_INT(true);
225                                  theRetToken=_returnToken;
226                                  break;
227                          }
# Line 473 | Line 473 | void MDLexer::mWhitespace(bool _createToken) {
473                  
474                  }
475                  if ( inputState->guessing==0 ) {
476 < #line 259 "MDParser.g"
476 > #line 218 "MDParser.g"
477                          newline();
478   #line 479 "MDLexer.cpp"
479                  }
# Line 501 | Line 501 | void MDLexer::mWhitespace(bool _createToken) {
501                  
502                  }
503                  if ( inputState->guessing==0 ) {
504 < #line 264 "MDParser.g"
504 > #line 223 "MDParser.g"
505                          printf("CPP_parser.g continuation line detected\n");
506                          deferredNewline();
507   #line 508 "MDLexer.cpp"
# Line 515 | Line 515 | void MDLexer::mWhitespace(bool _createToken) {
515          }
516          }
517          if ( inputState->guessing==0 ) {
518 < #line 267 "MDParser.g"
518 > #line 226 "MDParser.g"
519                  _ttype = ANTLR_USE_NAMESPACE(antlr)Token::SKIP;
520   #line 521 "MDLexer.cpp"
521          }
# Line 541 | Line 541 | void MDLexer::mComment(bool _createToken) {
541                  else if ((LA(1) == 0xa /* '\n' */  || LA(1) == 0xd /* '\r' */ )) {
542                          mEndOfLine(false);
543                          if ( inputState->guessing==0 ) {
544 < #line 274 "MDParser.g"
544 > #line 233 "MDParser.g"
545                                  deferredNewline();
546   #line 547 "MDLexer.cpp"
547                          }
# Line 560 | Line 560 | void MDLexer::mComment(bool _createToken) {
560          } // ( ... )*
561          match("*/");
562          if ( inputState->guessing==0 ) {
563 < #line 277 "MDParser.g"
563 > #line 236 "MDParser.g"
564                  _ttype = ANTLR_USE_NAMESPACE(antlr)Token::SKIP;
565   #line 566 "MDLexer.cpp"
566          }
# Line 622 | Line 622 | void MDLexer::mCPPComment(bool _createToken) {
622          } // ( ... )*
623          mEndOfLine(false);
624          if ( inputState->guessing==0 ) {
625 < #line 283 "MDParser.g"
625 > #line 242 "MDParser.g"
626                  _ttype = ANTLR_USE_NAMESPACE(antlr)Token::SKIP; newline();
627   #line 628 "MDLexer.cpp"
628          }
# Line 642 | Line 642 | void MDLexer::mPREPROC_DIRECTIVE(bool _createToken) {
642          match('#' /* charlit */ );
643          mLineDirective(false);
644          if ( inputState->guessing==0 ) {
645 < #line 290 "MDParser.g"
645 > #line 249 "MDParser.g"
646                  _ttype = ANTLR_USE_NAMESPACE(antlr)Token::SKIP; newline();
647   #line 648 "MDLexer.cpp"
648          }
# Line 662 | Line 662 | void MDLexer::mLineDirective(bool _createToken) {
662          ANTLR_USE_NAMESPACE(antlr)RefToken sl;
663          
664          if ( inputState->guessing==0 ) {
665 < #line 296 "MDParser.g"
665 > #line 255 "MDParser.g"
666                  
667                  deferredLineCount = 0;
668                  
# Line 704 | Line 704 | void MDLexer::mLineDirective(bool _createToken) {
704          mDecimal(true);
705          n=_returnToken;
706          if ( inputState->guessing==0 ) {
707 < #line 301 "MDParser.g"
707 > #line 260 "MDParser.g"
708                  setLine(oopse::lexi_cast<int>(n->getText()) - 1);
709   #line 710 "MDLexer.cpp"
710          }
# Line 727 | Line 727 | void MDLexer::mLineDirective(bool _createToken) {
727          sl=_returnToken;
728          }
729          if ( inputState->guessing==0 ) {
730 < #line 303 "MDParser.g"
730 > #line 262 "MDParser.g"
731                  std::string filename = sl->getText().substr(1,sl->getText().length()-2); observer->notify(filename);
732   #line 733 "MDLexer.cpp"
733          }
# Line 808 | Line 808 | void MDLexer::mDecimal(bool _createToken) {
808          ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
809          
810          { // ( ... )+
811 <        int _cnt119=0;
811 >        int _cnt124=0;
812          for (;;) {
813                  if (((LA(1) >= 0x30 /* '0' */  && LA(1) <= 0x39 /* '9' */ ))) {
814                          matchRange('0','9');
815                  }
816                  else {
817 <                        if ( _cnt119>=1 ) { goto _loop119; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
817 >                        if ( _cnt124>=1 ) { goto _loop124; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
818                  }
819                  
820 <                _cnt119++;
820 >                _cnt124++;
821          }
822 <        _loop119:;
822 >        _loop124:;
823          }  // ( ... )+
824          if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
825             _token = makeToken(_ttype);
# Line 857 | Line 857 | void MDLexer::mStringLiteral(bool _createToken) {
857                          
858                          }
859                          if ( inputState->guessing==0 ) {
860 < #line 343 "MDParser.g"
860 > #line 302 "MDParser.g"
861                                  deferredNewline();
862   #line 863 "MDLexer.cpp"
863                          }
# Line 1081 | Line 1081 | void MDLexer::mDigit(bool _createToken) {
1081          _saveIndex=0;
1082   }
1083  
1084 < void MDLexer::mLongSuffix(bool _createToken) {
1084 > void MDLexer::mVocabulary(bool _createToken) {
1085          int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
1086 <        _ttype = LongSuffix;
1086 >        _ttype = Vocabulary;
1087          ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
1088          
1089 <        switch ( LA(1)) {
1090 <        case 0x6c /* 'l' */ :
1091 <        {
1092 <                match('l' /* charlit */ );
1093 <                break;
1094 <        }
1095 <        case 0x4c /* 'L' */ :
1096 <        {
1097 <                match('L' /* charlit */ );
1098 <                break;
1099 <        }
1100 <        default:
1101 <        {
1102 <                throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
1103 <        }
1104 <        }
1089 >        matchRange('\3',static_cast<unsigned char>('\377'));
1090          if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
1091             _token = makeToken(_ttype);
1092             _token->setText(text.substr(_begin, text.length()-_begin));
# Line 1110 | Line 1095 | void MDLexer::mLongSuffix(bool _createToken) {
1095          _saveIndex=0;
1096   }
1097  
1098 < void MDLexer::mUnsignedSuffix(bool _createToken) {
1098 > void MDLexer::mID(bool _createToken) {
1099          int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
1100 <        _ttype = UnsignedSuffix;
1100 >        _ttype = ID;
1101          ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
1102          
1103 +        {
1104          switch ( LA(1)) {
1105 +        case 0x61 /* 'a' */ :
1106 +        case 0x62 /* 'b' */ :
1107 +        case 0x63 /* 'c' */ :
1108 +        case 0x64 /* 'd' */ :
1109 +        case 0x65 /* 'e' */ :
1110 +        case 0x66 /* 'f' */ :
1111 +        case 0x67 /* 'g' */ :
1112 +        case 0x68 /* 'h' */ :
1113 +        case 0x69 /* 'i' */ :
1114 +        case 0x6a /* 'j' */ :
1115 +        case 0x6b /* 'k' */ :
1116 +        case 0x6c /* 'l' */ :
1117 +        case 0x6d /* 'm' */ :
1118 +        case 0x6e /* 'n' */ :
1119 +        case 0x6f /* 'o' */ :
1120 +        case 0x70 /* 'p' */ :
1121 +        case 0x71 /* 'q' */ :
1122 +        case 0x72 /* 'r' */ :
1123 +        case 0x73 /* 's' */ :
1124 +        case 0x74 /* 't' */ :
1125          case 0x75 /* 'u' */ :
1126 +        case 0x76 /* 'v' */ :
1127 +        case 0x77 /* 'w' */ :
1128 +        case 0x78 /* 'x' */ :
1129 +        case 0x79 /* 'y' */ :
1130 +        case 0x7a /* 'z' */ :
1131          {
1132 <                match('u' /* charlit */ );
1132 >                matchRange('a','z');
1133                  break;
1134          }
1135 +        case 0x41 /* 'A' */ :
1136 +        case 0x42 /* 'B' */ :
1137 +        case 0x43 /* 'C' */ :
1138 +        case 0x44 /* 'D' */ :
1139 +        case 0x45 /* 'E' */ :
1140 +        case 0x46 /* 'F' */ :
1141 +        case 0x47 /* 'G' */ :
1142 +        case 0x48 /* 'H' */ :
1143 +        case 0x49 /* 'I' */ :
1144 +        case 0x4a /* 'J' */ :
1145 +        case 0x4b /* 'K' */ :
1146 +        case 0x4c /* 'L' */ :
1147 +        case 0x4d /* 'M' */ :
1148 +        case 0x4e /* 'N' */ :
1149 +        case 0x4f /* 'O' */ :
1150 +        case 0x50 /* 'P' */ :
1151 +        case 0x51 /* 'Q' */ :
1152 +        case 0x52 /* 'R' */ :
1153 +        case 0x53 /* 'S' */ :
1154 +        case 0x54 /* 'T' */ :
1155          case 0x55 /* 'U' */ :
1156 +        case 0x56 /* 'V' */ :
1157 +        case 0x57 /* 'W' */ :
1158 +        case 0x58 /* 'X' */ :
1159 +        case 0x59 /* 'Y' */ :
1160 +        case 0x5a /* 'Z' */ :
1161          {
1162 <                match('U' /* charlit */ );
1162 >                matchRange('A','Z');
1163                  break;
1164          }
1165 <        default:
1165 >        case 0x5f /* '_' */ :
1166          {
1167 <                throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
1132 <        }
1133 <        }
1134 <        if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
1135 <           _token = makeToken(_ttype);
1136 <           _token->setText(text.substr(_begin, text.length()-_begin));
1137 <        }
1138 <        _returnToken = _token;
1139 <        _saveIndex=0;
1140 < }
1141 <
1142 < void MDLexer::mFloatSuffix(bool _createToken) {
1143 <        int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
1144 <        _ttype = FloatSuffix;
1145 <        ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
1146 <        
1147 <        switch ( LA(1)) {
1148 <        case 0x66 /* 'f' */ :
1149 <        {
1150 <                match('f' /* charlit */ );
1151 <                break;
1152 <        }
1153 <        case 0x46 /* 'F' */ :
1154 <        {
1155 <                match('F' /* charlit */ );
1167 >                match('_' /* charlit */ );
1168                  break;
1169          }
1170          default:
# Line 1160 | Line 1172 | void MDLexer::mFloatSuffix(bool _createToken) {
1172                  throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
1173          }
1174          }
1175 +        }
1176 +        { // ( ... )*
1177 +        for (;;) {
1178 +                switch ( LA(1)) {
1179 +                case 0x61 /* 'a' */ :
1180 +                case 0x62 /* 'b' */ :
1181 +                case 0x63 /* 'c' */ :
1182 +                case 0x64 /* 'd' */ :
1183 +                case 0x65 /* 'e' */ :
1184 +                case 0x66 /* 'f' */ :
1185 +                case 0x67 /* 'g' */ :
1186 +                case 0x68 /* 'h' */ :
1187 +                case 0x69 /* 'i' */ :
1188 +                case 0x6a /* 'j' */ :
1189 +                case 0x6b /* 'k' */ :
1190 +                case 0x6c /* 'l' */ :
1191 +                case 0x6d /* 'm' */ :
1192 +                case 0x6e /* 'n' */ :
1193 +                case 0x6f /* 'o' */ :
1194 +                case 0x70 /* 'p' */ :
1195 +                case 0x71 /* 'q' */ :
1196 +                case 0x72 /* 'r' */ :
1197 +                case 0x73 /* 's' */ :
1198 +                case 0x74 /* 't' */ :
1199 +                case 0x75 /* 'u' */ :
1200 +                case 0x76 /* 'v' */ :
1201 +                case 0x77 /* 'w' */ :
1202 +                case 0x78 /* 'x' */ :
1203 +                case 0x79 /* 'y' */ :
1204 +                case 0x7a /* 'z' */ :
1205 +                {
1206 +                        matchRange('a','z');
1207 +                        break;
1208 +                }
1209 +                case 0x41 /* 'A' */ :
1210 +                case 0x42 /* 'B' */ :
1211 +                case 0x43 /* 'C' */ :
1212 +                case 0x44 /* 'D' */ :
1213 +                case 0x45 /* 'E' */ :
1214 +                case 0x46 /* 'F' */ :
1215 +                case 0x47 /* 'G' */ :
1216 +                case 0x48 /* 'H' */ :
1217 +                case 0x49 /* 'I' */ :
1218 +                case 0x4a /* 'J' */ :
1219 +                case 0x4b /* 'K' */ :
1220 +                case 0x4c /* 'L' */ :
1221 +                case 0x4d /* 'M' */ :
1222 +                case 0x4e /* 'N' */ :
1223 +                case 0x4f /* 'O' */ :
1224 +                case 0x50 /* 'P' */ :
1225 +                case 0x51 /* 'Q' */ :
1226 +                case 0x52 /* 'R' */ :
1227 +                case 0x53 /* 'S' */ :
1228 +                case 0x54 /* 'T' */ :
1229 +                case 0x55 /* 'U' */ :
1230 +                case 0x56 /* 'V' */ :
1231 +                case 0x57 /* 'W' */ :
1232 +                case 0x58 /* 'X' */ :
1233 +                case 0x59 /* 'Y' */ :
1234 +                case 0x5a /* 'Z' */ :
1235 +                {
1236 +                        matchRange('A','Z');
1237 +                        break;
1238 +                }
1239 +                case 0x5f /* '_' */ :
1240 +                {
1241 +                        match('_' /* charlit */ );
1242 +                        break;
1243 +                }
1244 +                case 0x30 /* '0' */ :
1245 +                case 0x31 /* '1' */ :
1246 +                case 0x32 /* '2' */ :
1247 +                case 0x33 /* '3' */ :
1248 +                case 0x34 /* '4' */ :
1249 +                case 0x35 /* '5' */ :
1250 +                case 0x36 /* '6' */ :
1251 +                case 0x37 /* '7' */ :
1252 +                case 0x38 /* '8' */ :
1253 +                case 0x39 /* '9' */ :
1254 +                {
1255 +                        matchRange('0','9');
1256 +                        break;
1257 +                }
1258 +                default:
1259 +                {
1260 +                        goto _loop120;
1261 +                }
1262 +                }
1263 +        }
1264 +        _loop120:;
1265 +        } // ( ... )*
1266 +        _ttype = testLiteralsTable(_ttype);
1267          if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
1268             _token = makeToken(_ttype);
1269             _token->setText(text.substr(_begin, text.length()-_begin));
# Line 1168 | Line 1272 | void MDLexer::mFloatSuffix(bool _createToken) {
1272          _saveIndex=0;
1273   }
1274  
1275 < void MDLexer::mExponent(bool _createToken) {
1275 > void MDLexer::mHEX_DIGIT(bool _createToken) {
1276          int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
1277 <        _ttype = Exponent;
1277 >        _ttype = HEX_DIGIT;
1278          ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
1279          
1280          {
1281          switch ( LA(1)) {
1282 <        case 0x65 /* 'e' */ :
1282 >        case 0x30 /* '0' */ :
1283 >        case 0x31 /* '1' */ :
1284 >        case 0x32 /* '2' */ :
1285 >        case 0x33 /* '3' */ :
1286 >        case 0x34 /* '4' */ :
1287 >        case 0x35 /* '5' */ :
1288 >        case 0x36 /* '6' */ :
1289 >        case 0x37 /* '7' */ :
1290 >        case 0x38 /* '8' */ :
1291 >        case 0x39 /* '9' */ :
1292          {
1293 <                match('e' /* charlit */ );
1293 >                matchRange('0','9');
1294                  break;
1295          }
1296 +        case 0x41 /* 'A' */ :
1297 +        case 0x42 /* 'B' */ :
1298 +        case 0x43 /* 'C' */ :
1299 +        case 0x44 /* 'D' */ :
1300          case 0x45 /* 'E' */ :
1301 +        case 0x46 /* 'F' */ :
1302          {
1303 <                match('E' /* charlit */ );
1303 >                matchRange('A','F');
1304                  break;
1305          }
1306 +        case 0x61 /* 'a' */ :
1307 +        case 0x62 /* 'b' */ :
1308 +        case 0x63 /* 'c' */ :
1309          case 0x64 /* 'd' */ :
1310 +        case 0x65 /* 'e' */ :
1311 +        case 0x66 /* 'f' */ :
1312          {
1313 <                match('d' /* charlit */ );
1313 >                matchRange('a','f');
1314                  break;
1315          }
1193        case 0x44 /* 'D' */ :
1194        {
1195                match('D' /* charlit */ );
1196                break;
1197        }
1316          default:
1317          {
1318                  throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
1319          }
1320          }
1321          }
1322 +        if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
1323 +           _token = makeToken(_ttype);
1324 +           _token->setText(text.substr(_begin, text.length()-_begin));
1325 +        }
1326 +        _returnToken = _token;
1327 +        _saveIndex=0;
1328 + }
1329 +
1330 + void MDLexer::mNUM_INT(bool _createToken) {
1331 +        int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
1332 +        _ttype = NUM_INT;
1333 +        ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
1334 +        ANTLR_USE_NAMESPACE(antlr)RefToken f1;
1335 +        ANTLR_USE_NAMESPACE(antlr)RefToken f2;
1336 +        ANTLR_USE_NAMESPACE(antlr)RefToken f3;
1337 +        ANTLR_USE_NAMESPACE(antlr)RefToken f4;
1338 + #line 395 "MDParser.g"
1339 +        
1340 +                        bool isDecimal = false;
1341 +                        ANTLR_USE_NAMESPACE(antlr)RefToken t = ANTLR_USE_NAMESPACE(antlr)nullToken;
1342 +                
1343 + #line 1344 "MDLexer.cpp"
1344 +        
1345          {
1346          switch ( LA(1)) {
1347          case 0x2b /* '+' */ :
# Line 1213 | Line 1354 | void MDLexer::mExponent(bool _createToken) {
1354                  match('-' /* charlit */ );
1355                  break;
1356          }
1357 +        case 0x2e /* '.' */ :
1358          case 0x30 /* '0' */ :
1359          case 0x31 /* '1' */ :
1360          case 0x32 /* '2' */ :
# Line 1232 | Line 1374 | void MDLexer::mExponent(bool _createToken) {
1374          }
1375          }
1376          }
1377 <        { // ( ... )+
1378 <        int _cnt127=0;
1379 <        for (;;) {
1377 >        {
1378 >        switch ( LA(1)) {
1379 >        case 0x2e /* '.' */ :
1380 >        {
1381 >                match('.' /* charlit */ );
1382 >                if ( inputState->guessing==0 ) {
1383 > #line 402 "MDParser.g"
1384 >                        _ttype = DOT;
1385 > #line 1386 "MDLexer.cpp"
1386 >                }
1387 >                {
1388                  if (((LA(1) >= 0x30 /* '0' */  && LA(1) <= 0x39 /* '9' */ ))) {
1389 <                        mDigit(false);
1389 >                        { // ( ... )+
1390 >                        int _cnt132=0;
1391 >                        for (;;) {
1392 >                                if (((LA(1) >= 0x30 /* '0' */  && LA(1) <= 0x39 /* '9' */ ))) {
1393 >                                        matchRange('0','9');
1394 >                                }
1395 >                                else {
1396 >                                        if ( _cnt132>=1 ) { goto _loop132; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
1397 >                                }
1398 >                                
1399 >                                _cnt132++;
1400 >                        }
1401 >                        _loop132:;
1402 >                        }  // ( ... )+
1403 >                        {
1404 >                        if ((LA(1) == 0x45 /* 'E' */  || LA(1) == 0x65 /* 'e' */ )) {
1405 >                                mEXPONENT(false);
1406 >                        }
1407 >                        else {
1408 >                        }
1409 >                        
1410 >                        }
1411 >                        {
1412 >                        if ((_tokenSet_6.member(LA(1)))) {
1413 >                                mFLOAT_SUFFIX(true);
1414 >                                f1=_returnToken;
1415 >                                if ( inputState->guessing==0 ) {
1416 > #line 403 "MDParser.g"
1417 >                                        t=f1;
1418 > #line 1419 "MDLexer.cpp"
1419 >                                }
1420 >                        }
1421 >                        else {
1422 >                        }
1423 >                        
1424 >                        }
1425 >                        if ( inputState->guessing==0 ) {
1426 > #line 404 "MDParser.g"
1427 >                                
1428 >                                                                        if ( t &&
1429 >                                                                                  (t->getText().find('f') != ANTLR_USE_NAMESPACE(std)string::npos ||
1430 >                                                                                        t->getText().find('F') != ANTLR_USE_NAMESPACE(std)string::npos ) ) {
1431 >                                                                                _ttype = NUM_FLOAT;
1432 >                                                                        }
1433 >                                                                        else {
1434 >                                                                                _ttype = NUM_DOUBLE; // assume double
1435 >                                                                        }
1436 >                                                                
1437 > #line 1438 "MDLexer.cpp"
1438 >                        }
1439                  }
1440                  else {
1242                        if ( _cnt127>=1 ) { goto _loop127; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
1441                  }
1442                  
1443 <                _cnt127++;
1246 <        }
1247 <        _loop127:;
1248 <        }  // ( ... )+
1249 <        if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
1250 <           _token = makeToken(_ttype);
1251 <           _token->setText(text.substr(_begin, text.length()-_begin));
1252 <        }
1253 <        _returnToken = _token;
1254 <        _saveIndex=0;
1255 < }
1256 <
1257 < void MDLexer::mVocabulary(bool _createToken) {
1258 <        int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
1259 <        _ttype = Vocabulary;
1260 <        ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
1261 <        
1262 <        matchRange('\3',static_cast<unsigned char>('\377'));
1263 <        if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
1264 <           _token = makeToken(_ttype);
1265 <           _token->setText(text.substr(_begin, text.length()-_begin));
1266 <        }
1267 <        _returnToken = _token;
1268 <        _saveIndex=0;
1269 < }
1270 <
1271 < void MDLexer::mNumber(bool _createToken) {
1272 <        int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
1273 <        _ttype = Number;
1274 <        ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
1275 <        
1276 <        {
1277 <        switch ( LA(1)) {
1278 <        case 0x2b /* '+' */ :
1279 <        {
1280 <                match('+' /* charlit */ );
1443 >                }
1444                  break;
1445          }
1283        case 0x2d /* '-' */ :
1284        {
1285                match('-' /* charlit */ );
1286                break;
1287        }
1288        case 0x2e /* '.' */ :
1446          case 0x30 /* '0' */ :
1447          case 0x31 /* '1' */ :
1448          case 0x32 /* '2' */ :
# Line 1297 | Line 1454 | void MDLexer::mNumber(bool _createToken) {
1454          case 0x38 /* '8' */ :
1455          case 0x39 /* '9' */ :
1456          {
1457 <                break;
1458 <        }
1459 <        default:
1460 <        {
1461 <                throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
1462 <        }
1463 <        }
1464 <        }
1465 <        {
1466 <        bool synPredMatched136 = false;
1310 <        if ((((LA(1) >= 0x30 /* '0' */  && LA(1) <= 0x39 /* '9' */ )) && (_tokenSet_6.member(LA(2))) && (true))) {
1311 <                int _m136 = mark();
1312 <                synPredMatched136 = true;
1313 <                inputState->guessing++;
1314 <                try {
1457 >                {
1458 >                switch ( LA(1)) {
1459 >                case 0x30 /* '0' */ :
1460 >                {
1461 >                        match('0' /* charlit */ );
1462 >                        if ( inputState->guessing==0 ) {
1463 > #line 416 "MDParser.g"
1464 >                                isDecimal = true;
1465 > #line 1466 "MDLexer.cpp"
1466 >                        }
1467                          {
1468 <                        { // ( ... )+
1469 <                        int _cnt134=0;
1470 <                        for (;;) {
1471 <                                if (((LA(1) >= 0x30 /* '0' */  && LA(1) <= 0x39 /* '9' */ ))) {
1472 <                                        mDigit(false);
1468 >                        if ((LA(1) == 0x58 /* 'X' */  || LA(1) == 0x78 /* 'x' */ )) {
1469 >                                {
1470 >                                switch ( LA(1)) {
1471 >                                case 0x78 /* 'x' */ :
1472 >                                {
1473 >                                        match('x' /* charlit */ );
1474 >                                        break;
1475                                  }
1476 +                                case 0x58 /* 'X' */ :
1477 +                                {
1478 +                                        match('X' /* charlit */ );
1479 +                                        break;
1480 +                                }
1481 +                                default:
1482 +                                {
1483 +                                        throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
1484 +                                }
1485 +                                }
1486 +                                }
1487 +                                { // ( ... )+
1488 +                                int _cnt139=0;
1489 +                                for (;;) {
1490 +                                        if ((_tokenSet_7.member(LA(1))) && (true) && (true)) {
1491 +                                                mHEX_DIGIT(false);
1492 +                                        }
1493 +                                        else {
1494 +                                                if ( _cnt139>=1 ) { goto _loop139; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
1495 +                                        }
1496 +                                        
1497 +                                        _cnt139++;
1498 +                                }
1499 +                                _loop139:;
1500 +                                }  // ( ... )+
1501 +                        }
1502 +                        else {
1503 +                                bool synPredMatched144 = false;
1504 +                                if ((((LA(1) >= 0x30 /* '0' */  && LA(1) <= 0x39 /* '9' */ )) && (true) && (true))) {
1505 +                                        int _m144 = mark();
1506 +                                        synPredMatched144 = true;
1507 +                                        inputState->guessing++;
1508 +                                        try {
1509 +                                                {
1510 +                                                { // ( ... )+
1511 +                                                int _cnt142=0;
1512 +                                                for (;;) {
1513 +                                                        if (((LA(1) >= 0x30 /* '0' */  && LA(1) <= 0x39 /* '9' */ ))) {
1514 +                                                                matchRange('0','9');
1515 +                                                        }
1516 +                                                        else {
1517 +                                                                if ( _cnt142>=1 ) { goto _loop142; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
1518 +                                                        }
1519 +                                                        
1520 +                                                        _cnt142++;
1521 +                                                }
1522 +                                                _loop142:;
1523 +                                                }  // ( ... )+
1524 +                                                {
1525 +                                                switch ( LA(1)) {
1526 +                                                case 0x2e /* '.' */ :
1527 +                                                {
1528 +                                                        match('.' /* charlit */ );
1529 +                                                        break;
1530 +                                                }
1531 +                                                case 0x45 /* 'E' */ :
1532 +                                                case 0x65 /* 'e' */ :
1533 +                                                {
1534 +                                                        mEXPONENT(false);
1535 +                                                        break;
1536 +                                                }
1537 +                                                case 0x44 /* 'D' */ :
1538 +                                                case 0x46 /* 'F' */ :
1539 +                                                case 0x64 /* 'd' */ :
1540 +                                                case 0x66 /* 'f' */ :
1541 +                                                {
1542 +                                                        mFLOAT_SUFFIX(false);
1543 +                                                        break;
1544 +                                                }
1545 +                                                default:
1546 +                                                {
1547 +                                                        throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
1548 +                                                }
1549 +                                                }
1550 +                                                }
1551 +                                                }
1552 +                                        }
1553 +                                        catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& pe) {
1554 +                                                synPredMatched144 = false;
1555 +                                        }
1556 +                                        rewind(_m144);
1557 +                                        inputState->guessing--;
1558 +                                }
1559 +                                if ( synPredMatched144 ) {
1560 +                                        { // ( ... )+
1561 +                                        int _cnt146=0;
1562 +                                        for (;;) {
1563 +                                                if (((LA(1) >= 0x30 /* '0' */  && LA(1) <= 0x39 /* '9' */ ))) {
1564 +                                                        matchRange('0','9');
1565 +                                                }
1566 +                                                else {
1567 +                                                        if ( _cnt146>=1 ) { goto _loop146; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
1568 +                                                }
1569 +                                                
1570 +                                                _cnt146++;
1571 +                                        }
1572 +                                        _loop146:;
1573 +                                        }  // ( ... )+
1574 +                                }
1575 +                                else if (((LA(1) >= 0x30 /* '0' */  && LA(1) <= 0x37 /* '7' */ )) && (true) && (true)) {
1576 +                                        { // ( ... )+
1577 +                                        int _cnt148=0;
1578 +                                        for (;;) {
1579 +                                                if (((LA(1) >= 0x30 /* '0' */  && LA(1) <= 0x37 /* '7' */ ))) {
1580 +                                                        matchRange('0','7');
1581 +                                                }
1582 +                                                else {
1583 +                                                        if ( _cnt148>=1 ) { goto _loop148; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
1584 +                                                }
1585 +                                                
1586 +                                                _cnt148++;
1587 +                                        }
1588 +                                        _loop148:;
1589 +                                        }  // ( ... )+
1590 +                                }
1591                                  else {
1323                                        if ( _cnt134>=1 ) { goto _loop134; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
1592                                  }
1325                                
1326                                _cnt134++;
1593                          }
1328                        _loop134:;
1329                        }  // ( ... )+
1330                        {
1331                        switch ( LA(1)) {
1332                        case 0x2e /* '.' */ :
1333                        {
1334                                match('.' /* charlit */ );
1335                                break;
1594                          }
1595 <                        case 0x65 /* 'e' */ :
1338 <                        {
1339 <                                match('e' /* charlit */ );
1340 <                                break;
1341 <                        }
1342 <                        case 0x45 /* 'E' */ :
1343 <                        {
1344 <                                match('E' /* charlit */ );
1345 <                                break;
1346 <                        }
1347 <                        case 0x64 /* 'd' */ :
1348 <                        {
1349 <                                match('d' /* charlit */ );
1350 <                                break;
1351 <                        }
1352 <                        case 0x44 /* 'D' */ :
1353 <                        {
1354 <                                match('D' /* charlit */ );
1355 <                                break;
1356 <                        }
1357 <                        default:
1358 <                        {
1359 <                                throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
1360 <                        }
1361 <                        }
1362 <                        }
1363 <                        }
1595 >                        break;
1596                  }
1597 <                catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& pe) {
1598 <                        synPredMatched136 = false;
1599 <                }
1600 <                rewind(_m136);
1601 <                inputState->guessing--;
1602 <        }
1603 <        if ( synPredMatched136 ) {
1604 <                { // ( ... )+
1605 <                int _cnt138=0;
1374 <                for (;;) {
1375 <                        if (((LA(1) >= 0x30 /* '0' */  && LA(1) <= 0x39 /* '9' */ ))) {
1376 <                                mDigit(false);
1377 <                        }
1378 <                        else {
1379 <                                if ( _cnt138>=1 ) { goto _loop138; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
1380 <                        }
1381 <                        
1382 <                        _cnt138++;
1383 <                }
1384 <                _loop138:;
1385 <                }  // ( ... )+
1597 >                case 0x31 /* '1' */ :
1598 >                case 0x32 /* '2' */ :
1599 >                case 0x33 /* '3' */ :
1600 >                case 0x34 /* '4' */ :
1601 >                case 0x35 /* '5' */ :
1602 >                case 0x36 /* '6' */ :
1603 >                case 0x37 /* '7' */ :
1604 >                case 0x38 /* '8' */ :
1605 >                case 0x39 /* '9' */ :
1606                  {
1607 <                switch ( LA(1)) {
1608 <                case 0x2e /* '.' */ :
1609 <                {
1390 <                        match('.' /* charlit */ );
1607 >                        {
1608 >                        matchRange('1','9');
1609 >                        }
1610                          { // ( ... )*
1611                          for (;;) {
1612                                  if (((LA(1) >= 0x30 /* '0' */  && LA(1) <= 0x39 /* '9' */ ))) {
1613 <                                        mDigit(false);
1613 >                                        matchRange('0','9');
1614                                  }
1615                                  else {
1616 <                                        goto _loop141;
1616 >                                        goto _loop151;
1617                                  }
1618                                  
1619                          }
1620 <                        _loop141:;
1620 >                        _loop151:;
1621                          } // ( ... )*
1403                        {
1404                        if ((_tokenSet_7.member(LA(1)))) {
1405                                mExponent(false);
1406                        }
1407                        else {
1408                        }
1409                        
1410                        }
1622                          if ( inputState->guessing==0 ) {
1623 < #line 450 "MDParser.g"
1624 <                                _ttype = FLOATONE;
1625 < #line 1415 "MDLexer.cpp"
1623 > #line 433 "MDParser.g"
1624 >                                isDecimal=true;
1625 > #line 1626 "MDLexer.cpp"
1626                          }
1627                          break;
1628                  }
1418                case 0x44 /* 'D' */ :
1419                case 0x45 /* 'E' */ :
1420                case 0x64 /* 'd' */ :
1421                case 0x65 /* 'e' */ :
1422                {
1423                        mExponent(false);
1424                        if ( inputState->guessing==0 ) {
1425 #line 451 "MDParser.g"
1426                                _ttype = FLOATTWO;
1427 #line 1428 "MDLexer.cpp"
1428                        }
1429                        break;
1430                }
1629                  default:
1630                  {
1631                          throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
# Line 1435 | Line 1633 | void MDLexer::mNumber(bool _createToken) {
1633                  }
1634                  }
1635                  {
1636 <                switch ( LA(1)) {
1439 <                case 0x46 /* 'F' */ :
1440 <                case 0x66 /* 'f' */ :
1441 <                {
1442 <                        mFloatSuffix(false);
1443 <                        break;
1444 <                }
1445 <                case 0x4c /* 'L' */ :
1446 <                case 0x6c /* 'l' */ :
1447 <                {
1448 <                        mLongSuffix(false);
1449 <                        break;
1450 <                }
1451 <                default:
1636 >                if ((LA(1) == 0x4c /* 'L' */  || LA(1) == 0x6c /* 'l' */ )) {
1637                          {
1453                        }
1454                }
1455                }
1456        }
1457        else if ((LA(1) == 0x30 /* '0' */ ) && (LA(2) == 0x58 /* 'X' */  || LA(2) == 0x78 /* 'x' */ )) {
1458                match('0' /* charlit */ );
1459                {
1460                switch ( LA(1)) {
1461                case 0x78 /* 'x' */ :
1462                {
1463                        match('x' /* charlit */ );
1464                        break;
1465                }
1466                case 0x58 /* 'X' */ :
1467                {
1468                        match('X' /* charlit */ );
1469                        break;
1470                }
1471                default:
1472                {
1473                        throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
1474                }
1475                }
1476                }
1477                { // ( ... )+
1478                int _cnt159=0;
1479                for (;;) {
1638                          switch ( LA(1)) {
1639 <                        case 0x61 /* 'a' */ :
1482 <                        case 0x62 /* 'b' */ :
1483 <                        case 0x63 /* 'c' */ :
1484 <                        case 0x64 /* 'd' */ :
1485 <                        case 0x65 /* 'e' */ :
1486 <                        case 0x66 /* 'f' */ :
1639 >                        case 0x6c /* 'l' */ :
1640                          {
1641 <                                matchRange('a','f');
1641 >                                match('l' /* charlit */ );
1642                                  break;
1643                          }
1644 <                        case 0x41 /* 'A' */ :
1492 <                        case 0x42 /* 'B' */ :
1493 <                        case 0x43 /* 'C' */ :
1494 <                        case 0x44 /* 'D' */ :
1495 <                        case 0x45 /* 'E' */ :
1496 <                        case 0x46 /* 'F' */ :
1644 >                        case 0x4c /* 'L' */ :
1645                          {
1646 <                                matchRange('A','F');
1646 >                                match('L' /* charlit */ );
1647                                  break;
1648                          }
1501                        case 0x30 /* '0' */ :
1502                        case 0x31 /* '1' */ :
1503                        case 0x32 /* '2' */ :
1504                        case 0x33 /* '3' */ :
1505                        case 0x34 /* '4' */ :
1506                        case 0x35 /* '5' */ :
1507                        case 0x36 /* '6' */ :
1508                        case 0x37 /* '7' */ :
1509                        case 0x38 /* '8' */ :
1510                        case 0x39 /* '9' */ :
1511                        {
1512                                mDigit(false);
1513                                break;
1514                        }
1649                          default:
1650                          {
1651 <                                if ( _cnt159>=1 ) { goto _loop159; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
1651 >                                throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
1652                          }
1653                          }
1654 <                        _cnt159++;
1654 >                        }
1655 >                        if ( inputState->guessing==0 ) {
1656 > #line 435 "MDParser.g"
1657 >                                _ttype = NUM_LONG;
1658 > #line 1659 "MDLexer.cpp"
1659 >                        }
1660                  }
1661 <                _loop159:;
1662 <                }  // ( ... )+
1524 <                { // ( ... )*
1525 <                for (;;) {
1661 >                else if (((_tokenSet_8.member(LA(1))))&&(isDecimal)) {
1662 >                        {
1663                          switch ( LA(1)) {
1664 <                        case 0x4c /* 'L' */ :
1528 <                        case 0x6c /* 'l' */ :
1664 >                        case 0x2e /* '.' */ :
1665                          {
1666 <                                mLongSuffix(false);
1666 >                                match('.' /* charlit */ );
1667 >                                { // ( ... )*
1668 >                                for (;;) {
1669 >                                        if (((LA(1) >= 0x30 /* '0' */  && LA(1) <= 0x39 /* '9' */ ))) {
1670 >                                                matchRange('0','9');
1671 >                                        }
1672 >                                        else {
1673 >                                                goto _loop156;
1674 >                                        }
1675 >                                        
1676 >                                }
1677 >                                _loop156:;
1678 >                                } // ( ... )*
1679 >                                {
1680 >                                if ((LA(1) == 0x45 /* 'E' */  || LA(1) == 0x65 /* 'e' */ )) {
1681 >                                        mEXPONENT(false);
1682 >                                }
1683 >                                else {
1684 >                                }
1685 >                                
1686 >                                }
1687 >                                {
1688 >                                if ((_tokenSet_6.member(LA(1)))) {
1689 >                                        mFLOAT_SUFFIX(true);
1690 >                                        f2=_returnToken;
1691 >                                        if ( inputState->guessing==0 ) {
1692 > #line 439 "MDParser.g"
1693 >                                                t=f2;
1694 > #line 1695 "MDLexer.cpp"
1695 >                                        }
1696 >                                }
1697 >                                else {
1698 >                                }
1699 >                                
1700 >                                }
1701                                  break;
1702                          }
1703 <                        case 0x55 /* 'U' */ :
1704 <                        case 0x75 /* 'u' */ :
1703 >                        case 0x45 /* 'E' */ :
1704 >                        case 0x65 /* 'e' */ :
1705                          {
1706 <                                mUnsignedSuffix(false);
1707 <                                break;
1708 <                        }
1709 <                        default:
1710 <                        {
1711 <                                goto _loop161;
1712 <                        }
1713 <                        }
1714 <                }
1715 <                _loop161:;
1546 <                } // ( ... )*
1547 <                if ( inputState->guessing==0 ) {
1548 < #line 479 "MDParser.g"
1549 <                        _ttype = HEXADECIMALINT;
1550 < #line 1551 "MDLexer.cpp"
1551 <                }
1552 <        }
1553 <        else if ((LA(1) == 0x2e /* '.' */ )) {
1554 <                match('.' /* charlit */ );
1555 <                if ( inputState->guessing==0 ) {
1556 < #line 457 "MDParser.g"
1557 <                        _ttype = DOT;
1558 < #line 1559 "MDLexer.cpp"
1559 <                }
1560 <                {
1561 <                if (((LA(1) >= 0x30 /* '0' */  && LA(1) <= 0x39 /* '9' */ ))) {
1562 <                        { // ( ... )+
1563 <                        int _cnt146=0;
1564 <                        for (;;) {
1565 <                                if (((LA(1) >= 0x30 /* '0' */  && LA(1) <= 0x39 /* '9' */ ))) {
1566 <                                        mDigit(false);
1706 >                                mEXPONENT(false);
1707 >                                {
1708 >                                if ((_tokenSet_6.member(LA(1)))) {
1709 >                                        mFLOAT_SUFFIX(true);
1710 >                                        f3=_returnToken;
1711 >                                        if ( inputState->guessing==0 ) {
1712 > #line 440 "MDParser.g"
1713 >                                                t=f3;
1714 > #line 1715 "MDLexer.cpp"
1715 >                                        }
1716                                  }
1717                                  else {
1569                                        if ( _cnt146>=1 ) { goto _loop146; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
1718                                  }
1719                                  
1720 <                                _cnt146++;
1720 >                                }
1721 >                                break;
1722                          }
1723 <                        _loop146:;
1575 <                        }  // ( ... )+
1576 <                        {
1577 <                        if ((_tokenSet_7.member(LA(1)))) {
1578 <                                mExponent(false);
1579 <                        }
1580 <                        else {
1581 <                        }
1582 <                        
1583 <                        }
1584 <                        if ( inputState->guessing==0 ) {
1585 < #line 458 "MDParser.g"
1586 <                                _ttype = FLOATONE;
1587 < #line 1588 "MDLexer.cpp"
1588 <                        }
1589 <                        {
1590 <                        switch ( LA(1)) {
1723 >                        case 0x44 /* 'D' */ :
1724                          case 0x46 /* 'F' */ :
1725 +                        case 0x64 /* 'd' */ :
1726                          case 0x66 /* 'f' */ :
1727                          {
1728 <                                mFloatSuffix(false);
1728 >                                mFLOAT_SUFFIX(true);
1729 >                                f4=_returnToken;
1730 >                                if ( inputState->guessing==0 ) {
1731 > #line 441 "MDParser.g"
1732 >                                        t=f4;
1733 > #line 1734 "MDLexer.cpp"
1734 >                                }
1735                                  break;
1736                          }
1737 <                        case 0x4c /* 'L' */ :
1598 <                        case 0x6c /* 'l' */ :
1737 >                        default:
1738                          {
1739 <                                mLongSuffix(false);
1601 <                                break;
1739 >                                throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
1740                          }
1603                        default:
1604                                {
1605                                }
1741                          }
1742                          }
1743 +                        if ( inputState->guessing==0 ) {
1744 + #line 443 "MDParser.g"
1745 +                                
1746 +                                                                        if ( t &&
1747 +                                                                                  (t->getText().find('f') != ANTLR_USE_NAMESPACE(std)string::npos ||
1748 +                                                                                        t->getText().find('F') != ANTLR_USE_NAMESPACE(std)string::npos ) ) {
1749 +                                                                                _ttype = NUM_FLOAT;
1750 +                                                                        }
1751 +                                                                        else {
1752 +                                                                                _ttype = NUM_DOUBLE; // assume double
1753 +                                                                        }
1754 +                                                                
1755 + #line 1756 "MDLexer.cpp"
1756 +                        }
1757                  }
1758                  else {
1759                  }
1760                  
1761                  }
1762 +                break;
1763          }
1764 <        else if ((LA(1) == 0x30 /* '0' */ ) && (true) && (true)) {
1765 <                match('0' /* charlit */ );
1616 <                { // ( ... )*
1617 <                for (;;) {
1618 <                        if (((LA(1) >= 0x30 /* '0' */  && LA(1) <= 0x37 /* '7' */ ))) {
1619 <                                matchRange('0','7');
1620 <                        }
1621 <                        else {
1622 <                                goto _loop150;
1623 <                        }
1624 <                        
1625 <                }
1626 <                _loop150:;
1627 <                } // ( ... )*
1628 <                { // ( ... )*
1629 <                for (;;) {
1630 <                        switch ( LA(1)) {
1631 <                        case 0x4c /* 'L' */ :
1632 <                        case 0x6c /* 'l' */ :
1633 <                        {
1634 <                                mLongSuffix(false);
1635 <                                break;
1636 <                        }
1637 <                        case 0x55 /* 'U' */ :
1638 <                        case 0x75 /* 'u' */ :
1639 <                        {
1640 <                                mUnsignedSuffix(false);
1641 <                                break;
1642 <                        }
1643 <                        default:
1644 <                        {
1645 <                                goto _loop152;
1646 <                        }
1647 <                        }
1648 <                }
1649 <                _loop152:;
1650 <                } // ( ... )*
1651 <                if ( inputState->guessing==0 ) {
1652 < #line 468 "MDParser.g"
1653 <                        _ttype = OCTALINT;
1654 < #line 1655 "MDLexer.cpp"
1655 <                }
1656 <        }
1657 <        else if (((LA(1) >= 0x31 /* '1' */  && LA(1) <= 0x39 /* '9' */ )) && (true) && (true)) {
1658 <                matchRange('1','9');
1659 <                { // ( ... )*
1660 <                for (;;) {
1661 <                        if (((LA(1) >= 0x30 /* '0' */  && LA(1) <= 0x39 /* '9' */ ))) {
1662 <                                mDigit(false);
1663 <                        }
1664 <                        else {
1665 <                                goto _loop154;
1666 <                        }
1667 <                        
1668 <                }
1669 <                _loop154:;
1670 <                } // ( ... )*
1671 <                { // ( ... )*
1672 <                for (;;) {
1673 <                        switch ( LA(1)) {
1674 <                        case 0x4c /* 'L' */ :
1675 <                        case 0x6c /* 'l' */ :
1676 <                        {
1677 <                                mLongSuffix(false);
1678 <                                break;
1679 <                        }
1680 <                        case 0x55 /* 'U' */ :
1681 <                        case 0x75 /* 'u' */ :
1682 <                        {
1683 <                                mUnsignedSuffix(false);
1684 <                                break;
1685 <                        }
1686 <                        default:
1687 <                        {
1688 <                                goto _loop156;
1689 <                        }
1690 <                        }
1691 <                }
1692 <                _loop156:;
1693 <                } // ( ... )*
1694 <                if ( inputState->guessing==0 ) {
1695 < #line 473 "MDParser.g"
1696 <                        _ttype = DECIMALINT;
1697 < #line 1698 "MDLexer.cpp"
1698 <                }
1699 <        }
1700 <        else {
1764 >        default:
1765 >        {
1766                  throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
1767          }
1703        
1768          }
1769 +        }
1770          if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
1771             _token = makeToken(_ttype);
1772             _token->setText(text.substr(_begin, text.length()-_begin));
# Line 1710 | Line 1775 | void MDLexer::mNumber(bool _createToken) {
1775          _saveIndex=0;
1776   }
1777  
1778 < void MDLexer::mID(bool _createToken) {
1778 > void MDLexer::mEXPONENT(bool _createToken) {
1779          int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
1780 <        _ttype = ID;
1780 >        _ttype = EXPONENT;
1781          ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
1782          
1783          {
1784          switch ( LA(1)) {
1720        case 0x61 /* 'a' */ :
1721        case 0x62 /* 'b' */ :
1722        case 0x63 /* 'c' */ :
1723        case 0x64 /* 'd' */ :
1785          case 0x65 /* 'e' */ :
1725        case 0x66 /* 'f' */ :
1726        case 0x67 /* 'g' */ :
1727        case 0x68 /* 'h' */ :
1728        case 0x69 /* 'i' */ :
1729        case 0x6a /* 'j' */ :
1730        case 0x6b /* 'k' */ :
1731        case 0x6c /* 'l' */ :
1732        case 0x6d /* 'm' */ :
1733        case 0x6e /* 'n' */ :
1734        case 0x6f /* 'o' */ :
1735        case 0x70 /* 'p' */ :
1736        case 0x71 /* 'q' */ :
1737        case 0x72 /* 'r' */ :
1738        case 0x73 /* 's' */ :
1739        case 0x74 /* 't' */ :
1740        case 0x75 /* 'u' */ :
1741        case 0x76 /* 'v' */ :
1742        case 0x77 /* 'w' */ :
1743        case 0x78 /* 'x' */ :
1744        case 0x79 /* 'y' */ :
1745        case 0x7a /* 'z' */ :
1786          {
1787 <                matchRange('a','z');
1787 >                match('e' /* charlit */ );
1788                  break;
1789          }
1750        case 0x41 /* 'A' */ :
1751        case 0x42 /* 'B' */ :
1752        case 0x43 /* 'C' */ :
1753        case 0x44 /* 'D' */ :
1790          case 0x45 /* 'E' */ :
1755        case 0x46 /* 'F' */ :
1756        case 0x47 /* 'G' */ :
1757        case 0x48 /* 'H' */ :
1758        case 0x49 /* 'I' */ :
1759        case 0x4a /* 'J' */ :
1760        case 0x4b /* 'K' */ :
1761        case 0x4c /* 'L' */ :
1762        case 0x4d /* 'M' */ :
1763        case 0x4e /* 'N' */ :
1764        case 0x4f /* 'O' */ :
1765        case 0x50 /* 'P' */ :
1766        case 0x51 /* 'Q' */ :
1767        case 0x52 /* 'R' */ :
1768        case 0x53 /* 'S' */ :
1769        case 0x54 /* 'T' */ :
1770        case 0x55 /* 'U' */ :
1771        case 0x56 /* 'V' */ :
1772        case 0x57 /* 'W' */ :
1773        case 0x58 /* 'X' */ :
1774        case 0x59 /* 'Y' */ :
1775        case 0x5a /* 'Z' */ :
1791          {
1792 <                matchRange('A','Z');
1792 >                match('E' /* charlit */ );
1793                  break;
1794          }
1795 <        case 0x5f /* '_' */ :
1795 >        default:
1796          {
1797 <                match('_' /* charlit */ );
1797 >                throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
1798 >        }
1799 >        }
1800 >        }
1801 >        {
1802 >        switch ( LA(1)) {
1803 >        case 0x2b /* '+' */ :
1804 >        {
1805 >                match('+' /* charlit */ );
1806                  break;
1807          }
1808 +        case 0x2d /* '-' */ :
1809 +        {
1810 +                match('-' /* charlit */ );
1811 +                break;
1812 +        }
1813 +        case 0x30 /* '0' */ :
1814 +        case 0x31 /* '1' */ :
1815 +        case 0x32 /* '2' */ :
1816 +        case 0x33 /* '3' */ :
1817 +        case 0x34 /* '4' */ :
1818 +        case 0x35 /* '5' */ :
1819 +        case 0x36 /* '6' */ :
1820 +        case 0x37 /* '7' */ :
1821 +        case 0x38 /* '8' */ :
1822 +        case 0x39 /* '9' */ :
1823 +        {
1824 +                break;
1825 +        }
1826          default:
1827          {
1828                  throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
1829          }
1830          }
1831          }
1832 <        { // ( ... )*
1832 >        { // ( ... )+
1833 >        int _cnt164=0;
1834          for (;;) {
1835 <                switch ( LA(1)) {
1794 <                case 0x61 /* 'a' */ :
1795 <                case 0x62 /* 'b' */ :
1796 <                case 0x63 /* 'c' */ :
1797 <                case 0x64 /* 'd' */ :
1798 <                case 0x65 /* 'e' */ :
1799 <                case 0x66 /* 'f' */ :
1800 <                case 0x67 /* 'g' */ :
1801 <                case 0x68 /* 'h' */ :
1802 <                case 0x69 /* 'i' */ :
1803 <                case 0x6a /* 'j' */ :
1804 <                case 0x6b /* 'k' */ :
1805 <                case 0x6c /* 'l' */ :
1806 <                case 0x6d /* 'm' */ :
1807 <                case 0x6e /* 'n' */ :
1808 <                case 0x6f /* 'o' */ :
1809 <                case 0x70 /* 'p' */ :
1810 <                case 0x71 /* 'q' */ :
1811 <                case 0x72 /* 'r' */ :
1812 <                case 0x73 /* 's' */ :
1813 <                case 0x74 /* 't' */ :
1814 <                case 0x75 /* 'u' */ :
1815 <                case 0x76 /* 'v' */ :
1816 <                case 0x77 /* 'w' */ :
1817 <                case 0x78 /* 'x' */ :
1818 <                case 0x79 /* 'y' */ :
1819 <                case 0x7a /* 'z' */ :
1820 <                {
1821 <                        matchRange('a','z');
1822 <                        break;
1823 <                }
1824 <                case 0x41 /* 'A' */ :
1825 <                case 0x42 /* 'B' */ :
1826 <                case 0x43 /* 'C' */ :
1827 <                case 0x44 /* 'D' */ :
1828 <                case 0x45 /* 'E' */ :
1829 <                case 0x46 /* 'F' */ :
1830 <                case 0x47 /* 'G' */ :
1831 <                case 0x48 /* 'H' */ :
1832 <                case 0x49 /* 'I' */ :
1833 <                case 0x4a /* 'J' */ :
1834 <                case 0x4b /* 'K' */ :
1835 <                case 0x4c /* 'L' */ :
1836 <                case 0x4d /* 'M' */ :
1837 <                case 0x4e /* 'N' */ :
1838 <                case 0x4f /* 'O' */ :
1839 <                case 0x50 /* 'P' */ :
1840 <                case 0x51 /* 'Q' */ :
1841 <                case 0x52 /* 'R' */ :
1842 <                case 0x53 /* 'S' */ :
1843 <                case 0x54 /* 'T' */ :
1844 <                case 0x55 /* 'U' */ :
1845 <                case 0x56 /* 'V' */ :
1846 <                case 0x57 /* 'W' */ :
1847 <                case 0x58 /* 'X' */ :
1848 <                case 0x59 /* 'Y' */ :
1849 <                case 0x5a /* 'Z' */ :
1850 <                {
1851 <                        matchRange('A','Z');
1852 <                        break;
1853 <                }
1854 <                case 0x5f /* '_' */ :
1855 <                {
1856 <                        match('_' /* charlit */ );
1857 <                        break;
1858 <                }
1859 <                case 0x30 /* '0' */ :
1860 <                case 0x31 /* '1' */ :
1861 <                case 0x32 /* '2' */ :
1862 <                case 0x33 /* '3' */ :
1863 <                case 0x34 /* '4' */ :
1864 <                case 0x35 /* '5' */ :
1865 <                case 0x36 /* '6' */ :
1866 <                case 0x37 /* '7' */ :
1867 <                case 0x38 /* '8' */ :
1868 <                case 0x39 /* '9' */ :
1869 <                {
1835 >                if (((LA(1) >= 0x30 /* '0' */  && LA(1) <= 0x39 /* '9' */ ))) {
1836                          matchRange('0','9');
1871                        break;
1837                  }
1838 <                default:
1839 <                {
1875 <                        goto _loop165;
1838 >                else {
1839 >                        if ( _cnt164>=1 ) { goto _loop164; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
1840                  }
1841 <                }
1841 >                
1842 >                _cnt164++;
1843          }
1844 <        _loop165:;
1845 <        } // ( ... )*
1881 <        _ttype = testLiteralsTable(_ttype);
1844 >        _loop164:;
1845 >        }  // ( ... )+
1846          if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
1847             _token = makeToken(_ttype);
1848             _token->setText(text.substr(_begin, text.length()-_begin));
# Line 1887 | Line 1851 | void MDLexer::mID(bool _createToken) {
1851          _saveIndex=0;
1852   }
1853  
1854 + void MDLexer::mFLOAT_SUFFIX(bool _createToken) {
1855 +        int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
1856 +        _ttype = FLOAT_SUFFIX;
1857 +        ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
1858 +        
1859 +        switch ( LA(1)) {
1860 +        case 0x66 /* 'f' */ :
1861 +        {
1862 +                match('f' /* charlit */ );
1863 +                break;
1864 +        }
1865 +        case 0x46 /* 'F' */ :
1866 +        {
1867 +                match('F' /* charlit */ );
1868 +                break;
1869 +        }
1870 +        case 0x64 /* 'd' */ :
1871 +        {
1872 +                match('d' /* charlit */ );
1873 +                break;
1874 +        }
1875 +        case 0x44 /* 'D' */ :
1876 +        {
1877 +                match('D' /* charlit */ );
1878 +                break;
1879 +        }
1880 +        default:
1881 +        {
1882 +                throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
1883 +        }
1884 +        }
1885 +        if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
1886 +           _token = makeToken(_ttype);
1887 +           _token->setText(text.substr(_begin, text.length()-_begin));
1888 +        }
1889 +        _returnToken = _token;
1890 +        _saveIndex=0;
1891 + }
1892  
1893 +
1894   const unsigned long MDLexer::_tokenSet_0_data_[] = { 4294958079UL, 4294966271UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
1895   // 0x0 0x1 0x2 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0xb 0xc 0xe 0xf 0x10 0x11 0x12
1896   // 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f   !
1897 < // \" # $ % & \' ( ) + , - . / 0 1 2 3 4 5
1897 > // \" # $ % & \' ( ) + , - . / 0 1 2
1898   const ANTLR_USE_NAMESPACE(antlr)BitSet MDLexer::_tokenSet_0(_tokenSet_0_data_,16);
1899   const unsigned long MDLexer::_tokenSet_1_data_[] = { 4294958079UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
1900   // 0x0 0x1 0x2 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0xb 0xc 0xe 0xf 0x10 0x11 0x12
1901   // 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f   !
1902 < // \" # $ % & \' ( ) * + , - . / 0 1 2 3 4 5
1902 > // \" # $ % & \' ( ) * + , - . / 0 1 2
1903   const ANTLR_USE_NAMESPACE(antlr)BitSet MDLexer::_tokenSet_1(_tokenSet_1_data_,16);
1904   const unsigned long MDLexer::_tokenSet_2_data_[] = { 0UL, 2164195460UL, 268435456UL, 22298694UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
1905 < // \" \' 0 1 2 3 4 5
1905 > // \" \' 0 1 2
1906   const ANTLR_USE_NAMESPACE(antlr)BitSet MDLexer::_tokenSet_2(_tokenSet_2_data_,10);
1907   const unsigned long MDLexer::_tokenSet_3_data_[] = { 4294958079UL, 4294967291UL, 4026531839UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
1908   // 0x0 0x1 0x2 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0xb 0xc 0xe 0xf 0x10 0x11 0x12
1909   // 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f   !
1910 < // # $ % & \' ( ) * + , - . / 0 1 2 3 4 5
1910 > // # $ % & \' ( ) * + , - . / 0 1 2
1911   const ANTLR_USE_NAMESPACE(antlr)BitSet MDLexer::_tokenSet_3(_tokenSet_3_data_,16);
1912   const unsigned long MDLexer::_tokenSet_4_data_[] = { 0UL, 67043456UL, 126UL, 126UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
1913 < // \' 0 1 2 3 4 5
1913 > // \' 0 1 2
1914   const ANTLR_USE_NAMESPACE(antlr)BitSet MDLexer::_tokenSet_4(_tokenSet_4_data_,10);
1915   const unsigned long MDLexer::_tokenSet_5_data_[] = { 4294967295UL, 4294967167UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
1916   // 0x0 0x1 0x2 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0xa 0xb 0xc 0xd 0xe 0xf 0x10
1917   // 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e
1918 < // 0x1f   ! \" # $ % & ( ) * + , - . / 0 1 2 3 4 5
1918 > // 0x1f   ! \" # $ % & ( ) * + , - . / 0 1 2
1919   const ANTLR_USE_NAMESPACE(antlr)BitSet MDLexer::_tokenSet_5(_tokenSet_5_data_,16);
1920 < const unsigned long MDLexer::_tokenSet_6_data_[] = { 0UL, 67059712UL, 48UL, 48UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
1918 < // . 0 1 2 3 4 5
1920 > const unsigned long MDLexer::_tokenSet_6_data_[] = { 0UL, 0UL, 80UL, 80UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
1921   const ANTLR_USE_NAMESPACE(antlr)BitSet MDLexer::_tokenSet_6(_tokenSet_6_data_,10);
1922 < const unsigned long MDLexer::_tokenSet_7_data_[] = { 0UL, 0UL, 48UL, 48UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
1922 > const unsigned long MDLexer::_tokenSet_7_data_[] = { 0UL, 67043328UL, 126UL, 126UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
1923 > // 0 1 2
1924   const ANTLR_USE_NAMESPACE(antlr)BitSet MDLexer::_tokenSet_7(_tokenSet_7_data_,10);
1925 + const unsigned long MDLexer::_tokenSet_8_data_[] = { 0UL, 16384UL, 112UL, 112UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
1926 + // .
1927 + const ANTLR_USE_NAMESPACE(antlr)BitSet MDLexer::_tokenSet_8(_tokenSet_8_data_,10);
1928  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines