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 770 by tim, Fri Dec 2 15:38:03 2005 UTC vs.
Revision 1390 by gezelter, Wed Nov 25 20:02:06 2009 UTC

# Line 1 | Line 1
1 < /* $ANTLR 2.7.5 (20050406): "MDParser.g" -> "MDLexer.cpp"$ */
1 > /* $ANTLR 2.7.7 (20090623): "MDParser.g" -> "MDLexer.cpp"$ */
2   #include "MDLexer.hpp"
3   #include <antlr/CharBuffer.hpp>
4   #include <antlr/TokenStreamException.hpp>
# Line 30 | Line 30 | void MDLexer::initLiterals()
30  
31   void MDLexer::initLiterals()
32   {
33 <        literals["members"] = 14;
34 <        literals["position"] = 15;
35 <        literals["torsion"] = 10;
33 >        literals["members"] = 16;
34 >        literals["position"] = 18;
35 >        literals["torsion"] = 11;
36          literals["component"] = 4;
37 <        literals["rigidBody"] = 11;
37 >        literals["restraint"] = 7;
38 >        literals["rigidBody"] = 13;
39 >        literals["center"] = 17;
40 >        literals["inversion"] = 12;
41          literals["zconstraint"] = 6;
42 <        literals["cutoffGroup"] = 12;
43 <        literals["bend"] = 9;
44 <        literals["orientation"] = 16;
45 <        literals["fragment"] = 13;
46 <        literals["bond"] = 8;
42 >        literals["cutoffGroup"] = 14;
43 >        literals["bend"] = 10;
44 >        literals["orientation"] = 19;
45 >        literals["fragment"] = 15;
46 >        literals["bond"] = 9;
47          literals["molecule"] = 5;
48 <        literals["atom"] = 7;
48 >        literals["atom"] = 8;
49   }
50  
51   ANTLR_USE_NAMESPACE(antlr)RefToken MDLexer::nextToken()
# Line 120 | Line 123 | ANTLR_USE_NAMESPACE(antlr)RefToken MDLexer::nextToken(
123                                  theRetToken=_returnToken;
124                                  break;
125                          }
123                        case 0x2b /* '+' */ :
124                        {
125                                mPLUS(true);
126                                theRetToken=_returnToken;
127                                break;
128                        }
129                        case 0x2d /* '-' */ :
130                        {
131                                mMINUS(true);
132                                theRetToken=_returnToken;
133                                break;
134                        }
126                          case 0x9 /* '\t' */ :
127                          case 0xa /* '\n' */ :
128                          case 0xc /* '\14' */ :
# Line 161 | Line 152 | ANTLR_USE_NAMESPACE(antlr)RefToken MDLexer::nextToken(
152                                  theRetToken=_returnToken;
153                                  break;
154                          }
164                        case 0x2e /* '.' */ :
165                        case 0x30 /* '0' */ :
166                        case 0x31 /* '1' */ :
167                        case 0x32 /* '2' */ :
168                        case 0x33 /* '3' */ :
169                        case 0x34 /* '4' */ :
170                        case 0x35 /* '5' */ :
171                        case 0x36 /* '6' */ :
172                        case 0x37 /* '7' */ :
173                        case 0x38 /* '8' */ :
174                        case 0x39 /* '9' */ :
175                        {
176                                mNumber(true);
177                                theRetToken=_returnToken;
178                                break;
179                        }
155                          case 0x41 /* 'A' */ :
156                          case 0x42 /* 'B' */ :
157                          case 0x43 /* 'C' */ :
# Line 235 | Line 210 | ANTLR_USE_NAMESPACE(antlr)RefToken MDLexer::nextToken(
210                                  theRetToken=_returnToken;
211                                  break;
212                          }
213 +                        case 0x2b /* '+' */ :
214 +                        case 0x2d /* '-' */ :
215 +                        case 0x2e /* '.' */ :
216 +                        case 0x30 /* '0' */ :
217 +                        case 0x31 /* '1' */ :
218 +                        case 0x32 /* '2' */ :
219 +                        case 0x33 /* '3' */ :
220 +                        case 0x34 /* '4' */ :
221 +                        case 0x35 /* '5' */ :
222 +                        case 0x36 /* '6' */ :
223 +                        case 0x37 /* '7' */ :
224 +                        case 0x38 /* '8' */ :
225 +                        case 0x39 /* '9' */ :
226 +                        {
227 +                                mNUM_INT(true);
228 +                                theRetToken=_returnToken;
229 +                                break;
230 +                        }
231                          default:
232                                  if ((LA(1) == 0x2f /* '/' */ ) && (LA(2) == 0x2a /* '*' */ )) {
233                                          mComment(true);
# Line 427 | Line 420 | void MDLexer::mRCURLY(bool _createToken) {
420          _saveIndex=0;
421   }
422  
430 void MDLexer::mPLUS(bool _createToken) {
431        int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
432        _ttype = PLUS;
433        ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
434        
435        match('+' /* charlit */ );
436        if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
437           _token = makeToken(_ttype);
438           _token->setText(text.substr(_begin, text.length()-_begin));
439        }
440        _returnToken = _token;
441        _saveIndex=0;
442 }
443
444 void MDLexer::mMINUS(bool _createToken) {
445        int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
446        _ttype = MINUS;
447        ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
448        
449        match('-' /* charlit */ );
450        if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
451           _token = makeToken(_ttype);
452           _token->setText(text.substr(_begin, text.length()-_begin));
453        }
454        _returnToken = _token;
455        _saveIndex=0;
456 }
457
423   void MDLexer::mWhitespace(bool _createToken) {
424          int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
425          _ttype = Whitespace;
# Line 511 | Line 476 | void MDLexer::mWhitespace(bool _createToken) {
476                  
477                  }
478                  if ( inputState->guessing==0 ) {
479 < #line 262 "MDParser.g"
479 > #line 233 "MDParser.g"
480                          newline();
481 < #line 517 "MDLexer.cpp"
481 > #line 482 "MDLexer.cpp"
482                  }
483                  break;
484          }
# Line 539 | Line 504 | void MDLexer::mWhitespace(bool _createToken) {
504                  
505                  }
506                  if ( inputState->guessing==0 ) {
507 < #line 267 "MDParser.g"
507 > #line 238 "MDParser.g"
508                          printf("CPP_parser.g continuation line detected\n");
509                          deferredNewline();
510 < #line 546 "MDLexer.cpp"
510 > #line 511 "MDLexer.cpp"
511                  }
512                  break;
513          }
# Line 553 | Line 518 | void MDLexer::mWhitespace(bool _createToken) {
518          }
519          }
520          if ( inputState->guessing==0 ) {
521 < #line 270 "MDParser.g"
521 > #line 241 "MDParser.g"
522                  _ttype = ANTLR_USE_NAMESPACE(antlr)Token::SKIP;
523 < #line 559 "MDLexer.cpp"
523 > #line 524 "MDLexer.cpp"
524          }
525          if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
526             _token = makeToken(_ttype);
# Line 579 | Line 544 | void MDLexer::mComment(bool _createToken) {
544                  else if ((LA(1) == 0xa /* '\n' */  || LA(1) == 0xd /* '\r' */ )) {
545                          mEndOfLine(false);
546                          if ( inputState->guessing==0 ) {
547 < #line 277 "MDParser.g"
547 > #line 248 "MDParser.g"
548                                  deferredNewline();
549 < #line 585 "MDLexer.cpp"
549 > #line 550 "MDLexer.cpp"
550                          }
551                  }
552                  else if ((_tokenSet_0.member(LA(1)))) {
# Line 590 | Line 555 | void MDLexer::mComment(bool _createToken) {
555                          }
556                  }
557                  else {
558 <                        goto _loop81;
558 >                        goto _loop86;
559                  }
560                  
561          }
562 <        _loop81:;
562 >        _loop86:;
563          } // ( ... )*
564          match("*/");
565          if ( inputState->guessing==0 ) {
566 < #line 280 "MDParser.g"
566 > #line 251 "MDParser.g"
567                  _ttype = ANTLR_USE_NAMESPACE(antlr)Token::SKIP;
568 < #line 604 "MDLexer.cpp"
568 > #line 569 "MDLexer.cpp"
569          }
570          if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
571             _token = makeToken(_ttype);
# Line 652 | Line 617 | void MDLexer::mCPPComment(bool _createToken) {
617                          }
618                  }
619                  else {
620 <                        goto _loop85;
620 >                        goto _loop90;
621                  }
622                  
623          }
624 <        _loop85:;
624 >        _loop90:;
625          } // ( ... )*
626          mEndOfLine(false);
627          if ( inputState->guessing==0 ) {
628 < #line 286 "MDParser.g"
628 > #line 257 "MDParser.g"
629                  _ttype = ANTLR_USE_NAMESPACE(antlr)Token::SKIP; newline();
630 < #line 666 "MDLexer.cpp"
630 > #line 631 "MDLexer.cpp"
631          }
632          if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
633             _token = makeToken(_ttype);
# Line 680 | Line 645 | void MDLexer::mPREPROC_DIRECTIVE(bool _createToken) {
645          match('#' /* charlit */ );
646          mLineDirective(false);
647          if ( inputState->guessing==0 ) {
648 < #line 293 "MDParser.g"
648 > #line 264 "MDParser.g"
649                  _ttype = ANTLR_USE_NAMESPACE(antlr)Token::SKIP; newline();
650 < #line 686 "MDLexer.cpp"
650 > #line 651 "MDLexer.cpp"
651          }
652          if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
653             _token = makeToken(_ttype);
# Line 700 | Line 665 | void MDLexer::mLineDirective(bool _createToken) {
665          ANTLR_USE_NAMESPACE(antlr)RefToken sl;
666          
667          if ( inputState->guessing==0 ) {
668 < #line 299 "MDParser.g"
668 > #line 270 "MDParser.g"
669                  
670                  deferredLineCount = 0;
671                  
672 < #line 708 "MDLexer.cpp"
672 > #line 673 "MDLexer.cpp"
673          }
674          {
675          switch ( LA(1)) {
# Line 726 | Line 691 | void MDLexer::mLineDirective(bool _createToken) {
691          }
692          }
693          { // ( ... )+
694 <        int _cnt90=0;
694 >        int _cnt95=0;
695          for (;;) {
696                  if ((LA(1) == 0x9 /* '\t' */  || LA(1) == 0xc /* '\14' */  || LA(1) == 0x20 /* ' ' */ )) {
697                          mSpace(false);
698                  }
699                  else {
700 <                        if ( _cnt90>=1 ) { goto _loop90; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
700 >                        if ( _cnt95>=1 ) { goto _loop95; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
701                  }
702                  
703 <                _cnt90++;
703 >                _cnt95++;
704          }
705 <        _loop90:;
705 >        _loop95:;
706          }  // ( ... )+
707          mDecimal(true);
708          n=_returnToken;
709          if ( inputState->guessing==0 ) {
710 < #line 304 "MDParser.g"
711 <                setLine(oopse::lexi_cast<int>(n->getText()) - 1);
712 < #line 748 "MDLexer.cpp"
710 > #line 275 "MDParser.g"
711 >                setLine(OpenMD::lexi_cast<int>(n->getText()) - 1);
712 > #line 713 "MDLexer.cpp"
713          }
714          { // ( ... )+
715 <        int _cnt92=0;
715 >        int _cnt97=0;
716          for (;;) {
717                  if ((LA(1) == 0x9 /* '\t' */  || LA(1) == 0xc /* '\14' */  || LA(1) == 0x20 /* ' ' */ )) {
718                          mSpace(false);
719                  }
720                  else {
721 <                        if ( _cnt92>=1 ) { goto _loop92; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
721 >                        if ( _cnt97>=1 ) { goto _loop97; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
722                  }
723                  
724 <                _cnt92++;
724 >                _cnt97++;
725          }
726 <        _loop92:;
726 >        _loop97:;
727          }  // ( ... )+
728          {
729          mStringLiteral(true);
730          sl=_returnToken;
731          }
732          if ( inputState->guessing==0 ) {
733 < #line 306 "MDParser.g"
733 > #line 277 "MDParser.g"
734                  std::string filename = sl->getText().substr(1,sl->getText().length()-2); observer->notify(filename);
735 < #line 771 "MDLexer.cpp"
735 > #line 736 "MDLexer.cpp"
736          }
737          { // ( ... )*
738          for (;;) {
739                  if ((LA(1) == 0x9 /* '\t' */  || LA(1) == 0xc /* '\14' */  || LA(1) == 0x20 /* ' ' */ )) {
740                          { // ( ... )+
741 <                        int _cnt96=0;
741 >                        int _cnt101=0;
742                          for (;;) {
743                                  if ((LA(1) == 0x9 /* '\t' */  || LA(1) == 0xc /* '\14' */  || LA(1) == 0x20 /* ' ' */ )) {
744                                          mSpace(false);
745                                  }
746                                  else {
747 <                                        if ( _cnt96>=1 ) { goto _loop96; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
747 >                                        if ( _cnt101>=1 ) { goto _loop101; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
748                                  }
749                                  
750 <                                _cnt96++;
750 >                                _cnt101++;
751                          }
752 <                        _loop96:;
752 >                        _loop101:;
753                          }  // ( ... )+
754                          mDecimal(false);
755                  }
756                  else {
757 <                        goto _loop97;
757 >                        goto _loop102;
758                  }
759                  
760          }
761 <        _loop97:;
761 >        _loop102:;
762          } // ( ... )*
763          mEndOfLine(false);
764          if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
# Line 846 | Line 811 | void MDLexer::mDecimal(bool _createToken) {
811          ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
812          
813          { // ( ... )+
814 <        int _cnt122=0;
814 >        int _cnt132=0;
815          for (;;) {
816                  if (((LA(1) >= 0x30 /* '0' */  && LA(1) <= 0x39 /* '9' */ ))) {
817                          matchRange('0','9');
818                  }
819                  else {
820 <                        if ( _cnt122>=1 ) { goto _loop122; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
820 >                        if ( _cnt132>=1 ) { goto _loop132; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
821                  }
822                  
823 <                _cnt122++;
823 >                _cnt132++;
824          }
825 <        _loop122:;
825 >        _loop132:;
826          }  // ( ... )+
827          if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
828             _token = makeToken(_ttype);
# Line 895 | Line 860 | void MDLexer::mStringLiteral(bool _createToken) {
860                          
861                          }
862                          if ( inputState->guessing==0 ) {
863 < #line 346 "MDParser.g"
863 > #line 317 "MDParser.g"
864                                  deferredNewline();
865 < #line 901 "MDLexer.cpp"
865 > #line 866 "MDLexer.cpp"
866                          }
867                  }
868                  else if ((_tokenSet_3.member(LA(1)))) {
# Line 906 | Line 871 | void MDLexer::mStringLiteral(bool _createToken) {
871                          }
872                  }
873                  else {
874 <                        goto _loop107;
874 >                        goto _loop112;
875                  }
876                  
877          }
878 <        _loop107:;
878 >        _loop112:;
879          } // ( ... )*
880          match('\"' /* charlit */ );
881          if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
# Line 1070 | Line 1035 | void MDLexer::mEscape(bool _createToken) {
1035          {
1036                  match('x' /* charlit */ );
1037                  { // ( ... )+
1038 <                int _cnt118=0;
1038 >                int _cnt123=0;
1039                  for (;;) {
1040                          if (((LA(1) >= 0x30 /* '0' */  && LA(1) <= 0x39 /* '9' */ )) && (_tokenSet_1.member(LA(2))) && (true)) {
1041                                  mDigit(false);
# Line 1082 | Line 1047 | void MDLexer::mEscape(bool _createToken) {
1047                                  matchRange('A','F');
1048                          }
1049                          else {
1050 <                                if ( _cnt118>=1 ) { goto _loop118; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
1050 >                                if ( _cnt123>=1 ) { goto _loop123; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
1051                          }
1052                          
1053 <                        _cnt118++;
1053 >                        _cnt123++;
1054                  }
1055 <                _loop118:;
1055 >                _loop123:;
1056                  }  // ( ... )+
1057                  break;
1058          }
# Line 1119 | Line 1084 | void MDLexer::mDigit(bool _createToken) {
1084          _saveIndex=0;
1085   }
1086  
1087 < void MDLexer::mLongSuffix(bool _createToken) {
1087 > void MDLexer::mVocabulary(bool _createToken) {
1088          int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
1089 <        _ttype = LongSuffix;
1089 >        _ttype = Vocabulary;
1090          ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
1091          
1092 <        switch ( LA(1)) {
1128 <        case 0x6c /* 'l' */ :
1129 <        {
1130 <                match('l' /* charlit */ );
1131 <                break;
1132 <        }
1133 <        case 0x4c /* 'L' */ :
1134 <        {
1135 <                match('L' /* charlit */ );
1136 <                break;
1137 <        }
1138 <        default:
1139 <        {
1140 <                throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
1141 <        }
1142 <        }
1092 >        matchRange('\3',static_cast<unsigned char>('\377'));
1093          if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
1094             _token = makeToken(_ttype);
1095             _token->setText(text.substr(_begin, text.length()-_begin));
# Line 1148 | Line 1098 | void MDLexer::mLongSuffix(bool _createToken) {
1098          _saveIndex=0;
1099   }
1100  
1101 < void MDLexer::mUnsignedSuffix(bool _createToken) {
1101 > void MDLexer::mID(bool _createToken) {
1102          int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
1103 <        _ttype = UnsignedSuffix;
1103 >        _ttype = ID;
1104          ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
1105          
1106 +        {
1107          switch ( LA(1)) {
1108 +        case 0x61 /* 'a' */ :
1109 +        case 0x62 /* 'b' */ :
1110 +        case 0x63 /* 'c' */ :
1111 +        case 0x64 /* 'd' */ :
1112 +        case 0x65 /* 'e' */ :
1113 +        case 0x66 /* 'f' */ :
1114 +        case 0x67 /* 'g' */ :
1115 +        case 0x68 /* 'h' */ :
1116 +        case 0x69 /* 'i' */ :
1117 +        case 0x6a /* 'j' */ :
1118 +        case 0x6b /* 'k' */ :
1119 +        case 0x6c /* 'l' */ :
1120 +        case 0x6d /* 'm' */ :
1121 +        case 0x6e /* 'n' */ :
1122 +        case 0x6f /* 'o' */ :
1123 +        case 0x70 /* 'p' */ :
1124 +        case 0x71 /* 'q' */ :
1125 +        case 0x72 /* 'r' */ :
1126 +        case 0x73 /* 's' */ :
1127 +        case 0x74 /* 't' */ :
1128          case 0x75 /* 'u' */ :
1129 +        case 0x76 /* 'v' */ :
1130 +        case 0x77 /* 'w' */ :
1131 +        case 0x78 /* 'x' */ :
1132 +        case 0x79 /* 'y' */ :
1133 +        case 0x7a /* 'z' */ :
1134          {
1135 <                match('u' /* charlit */ );
1135 >                matchRange('a','z');
1136                  break;
1137          }
1138 +        case 0x41 /* 'A' */ :
1139 +        case 0x42 /* 'B' */ :
1140 +        case 0x43 /* 'C' */ :
1141 +        case 0x44 /* 'D' */ :
1142 +        case 0x45 /* 'E' */ :
1143 +        case 0x46 /* 'F' */ :
1144 +        case 0x47 /* 'G' */ :
1145 +        case 0x48 /* 'H' */ :
1146 +        case 0x49 /* 'I' */ :
1147 +        case 0x4a /* 'J' */ :
1148 +        case 0x4b /* 'K' */ :
1149 +        case 0x4c /* 'L' */ :
1150 +        case 0x4d /* 'M' */ :
1151 +        case 0x4e /* 'N' */ :
1152 +        case 0x4f /* 'O' */ :
1153 +        case 0x50 /* 'P' */ :
1154 +        case 0x51 /* 'Q' */ :
1155 +        case 0x52 /* 'R' */ :
1156 +        case 0x53 /* 'S' */ :
1157 +        case 0x54 /* 'T' */ :
1158          case 0x55 /* 'U' */ :
1159 +        case 0x56 /* 'V' */ :
1160 +        case 0x57 /* 'W' */ :
1161 +        case 0x58 /* 'X' */ :
1162 +        case 0x59 /* 'Y' */ :
1163 +        case 0x5a /* 'Z' */ :
1164          {
1165 <                match('U' /* charlit */ );
1165 >                matchRange('A','Z');
1166                  break;
1167          }
1168 <        default:
1168 >        case 0x5f /* '_' */ :
1169          {
1170 <                throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
1170 <        }
1171 <        }
1172 <        if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
1173 <           _token = makeToken(_ttype);
1174 <           _token->setText(text.substr(_begin, text.length()-_begin));
1175 <        }
1176 <        _returnToken = _token;
1177 <        _saveIndex=0;
1178 < }
1179 <
1180 < void MDLexer::mFloatSuffix(bool _createToken) {
1181 <        int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
1182 <        _ttype = FloatSuffix;
1183 <        ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
1184 <        
1185 <        switch ( LA(1)) {
1186 <        case 0x66 /* 'f' */ :
1187 <        {
1188 <                match('f' /* charlit */ );
1170 >                match('_' /* charlit */ );
1171                  break;
1172          }
1191        case 0x46 /* 'F' */ :
1192        {
1193                match('F' /* charlit */ );
1194                break;
1195        }
1173          default:
1174          {
1175                  throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
1176          }
1177 +        }
1178 +        }
1179 +        { // ( ... )*
1180 +        for (;;) {
1181 +                switch ( LA(1)) {
1182 +                case 0x61 /* 'a' */ :
1183 +                case 0x62 /* 'b' */ :
1184 +                case 0x63 /* 'c' */ :
1185 +                case 0x64 /* 'd' */ :
1186 +                case 0x65 /* 'e' */ :
1187 +                case 0x66 /* 'f' */ :
1188 +                case 0x67 /* 'g' */ :
1189 +                case 0x68 /* 'h' */ :
1190 +                case 0x69 /* 'i' */ :
1191 +                case 0x6a /* 'j' */ :
1192 +                case 0x6b /* 'k' */ :
1193 +                case 0x6c /* 'l' */ :
1194 +                case 0x6d /* 'm' */ :
1195 +                case 0x6e /* 'n' */ :
1196 +                case 0x6f /* 'o' */ :
1197 +                case 0x70 /* 'p' */ :
1198 +                case 0x71 /* 'q' */ :
1199 +                case 0x72 /* 'r' */ :
1200 +                case 0x73 /* 's' */ :
1201 +                case 0x74 /* 't' */ :
1202 +                case 0x75 /* 'u' */ :
1203 +                case 0x76 /* 'v' */ :
1204 +                case 0x77 /* 'w' */ :
1205 +                case 0x78 /* 'x' */ :
1206 +                case 0x79 /* 'y' */ :
1207 +                case 0x7a /* 'z' */ :
1208 +                {
1209 +                        matchRange('a','z');
1210 +                        break;
1211 +                }
1212 +                case 0x41 /* 'A' */ :
1213 +                case 0x42 /* 'B' */ :
1214 +                case 0x43 /* 'C' */ :
1215 +                case 0x44 /* 'D' */ :
1216 +                case 0x45 /* 'E' */ :
1217 +                case 0x46 /* 'F' */ :
1218 +                case 0x47 /* 'G' */ :
1219 +                case 0x48 /* 'H' */ :
1220 +                case 0x49 /* 'I' */ :
1221 +                case 0x4a /* 'J' */ :
1222 +                case 0x4b /* 'K' */ :
1223 +                case 0x4c /* 'L' */ :
1224 +                case 0x4d /* 'M' */ :
1225 +                case 0x4e /* 'N' */ :
1226 +                case 0x4f /* 'O' */ :
1227 +                case 0x50 /* 'P' */ :
1228 +                case 0x51 /* 'Q' */ :
1229 +                case 0x52 /* 'R' */ :
1230 +                case 0x53 /* 'S' */ :
1231 +                case 0x54 /* 'T' */ :
1232 +                case 0x55 /* 'U' */ :
1233 +                case 0x56 /* 'V' */ :
1234 +                case 0x57 /* 'W' */ :
1235 +                case 0x58 /* 'X' */ :
1236 +                case 0x59 /* 'Y' */ :
1237 +                case 0x5a /* 'Z' */ :
1238 +                {
1239 +                        matchRange('A','Z');
1240 +                        break;
1241 +                }
1242 +                case 0x5f /* '_' */ :
1243 +                {
1244 +                        match('_' /* charlit */ );
1245 +                        break;
1246 +                }
1247 +                case 0x30 /* '0' */ :
1248 +                case 0x31 /* '1' */ :
1249 +                case 0x32 /* '2' */ :
1250 +                case 0x33 /* '3' */ :
1251 +                case 0x34 /* '4' */ :
1252 +                case 0x35 /* '5' */ :
1253 +                case 0x36 /* '6' */ :
1254 +                case 0x37 /* '7' */ :
1255 +                case 0x38 /* '8' */ :
1256 +                case 0x39 /* '9' */ :
1257 +                {
1258 +                        matchRange('0','9');
1259 +                        break;
1260 +                }
1261 +                default:
1262 +                {
1263 +                        goto _loop128;
1264 +                }
1265 +                }
1266          }
1267 +        _loop128:;
1268 +        } // ( ... )*
1269 +        _ttype = testLiteralsTable(_ttype);
1270          if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
1271             _token = makeToken(_ttype);
1272             _token->setText(text.substr(_begin, text.length()-_begin));
# Line 1206 | Line 1275 | void MDLexer::mFloatSuffix(bool _createToken) {
1275          _saveIndex=0;
1276   }
1277  
1278 < void MDLexer::mExponent(bool _createToken) {
1278 > void MDLexer::mHEX_DIGIT(bool _createToken) {
1279          int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
1280 <        _ttype = Exponent;
1280 >        _ttype = HEX_DIGIT;
1281          ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
1282          
1283          {
1284          switch ( LA(1)) {
1285 <        case 0x65 /* 'e' */ :
1285 >        case 0x30 /* '0' */ :
1286 >        case 0x31 /* '1' */ :
1287 >        case 0x32 /* '2' */ :
1288 >        case 0x33 /* '3' */ :
1289 >        case 0x34 /* '4' */ :
1290 >        case 0x35 /* '5' */ :
1291 >        case 0x36 /* '6' */ :
1292 >        case 0x37 /* '7' */ :
1293 >        case 0x38 /* '8' */ :
1294 >        case 0x39 /* '9' */ :
1295          {
1296 <                match('e' /* charlit */ );
1296 >                matchRange('0','9');
1297                  break;
1298          }
1299 +        case 0x41 /* 'A' */ :
1300 +        case 0x42 /* 'B' */ :
1301 +        case 0x43 /* 'C' */ :
1302 +        case 0x44 /* 'D' */ :
1303          case 0x45 /* 'E' */ :
1304 +        case 0x46 /* 'F' */ :
1305          {
1306 <                match('E' /* charlit */ );
1306 >                matchRange('A','F');
1307                  break;
1308          }
1309 +        case 0x61 /* 'a' */ :
1310 +        case 0x62 /* 'b' */ :
1311 +        case 0x63 /* 'c' */ :
1312          case 0x64 /* 'd' */ :
1313 +        case 0x65 /* 'e' */ :
1314 +        case 0x66 /* 'f' */ :
1315          {
1316 <                match('d' /* charlit */ );
1316 >                matchRange('a','f');
1317                  break;
1318          }
1231        case 0x44 /* 'D' */ :
1232        {
1233                match('D' /* charlit */ );
1234                break;
1235        }
1319          default:
1320          {
1321                  throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
1322          }
1323          }
1324          }
1325 +        if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
1326 +           _token = makeToken(_ttype);
1327 +           _token->setText(text.substr(_begin, text.length()-_begin));
1328 +        }
1329 +        _returnToken = _token;
1330 +        _saveIndex=0;
1331 + }
1332 +
1333 + void MDLexer::mNUM_INT(bool _createToken) {
1334 +        int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
1335 +        _ttype = NUM_INT;
1336 +        ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
1337 +        ANTLR_USE_NAMESPACE(antlr)RefToken f1;
1338 +        ANTLR_USE_NAMESPACE(antlr)RefToken f2;
1339 +        ANTLR_USE_NAMESPACE(antlr)RefToken f3;
1340 +        ANTLR_USE_NAMESPACE(antlr)RefToken f4;
1341 + #line 410 "MDParser.g"
1342 +        
1343 +                        bool isDecimal = false;
1344 +                        ANTLR_USE_NAMESPACE(antlr)RefToken t = ANTLR_USE_NAMESPACE(antlr)nullToken;
1345 +                
1346 + #line 1347 "MDLexer.cpp"
1347 +        
1348          {
1349          switch ( LA(1)) {
1350          case 0x2b /* '+' */ :
# Line 1251 | Line 1357 | void MDLexer::mExponent(bool _createToken) {
1357                  match('-' /* charlit */ );
1358                  break;
1359          }
1360 +        case 0x2e /* '.' */ :
1361          case 0x30 /* '0' */ :
1362          case 0x31 /* '1' */ :
1363          case 0x32 /* '2' */ :
# Line 1270 | Line 1377 | void MDLexer::mExponent(bool _createToken) {
1377          }
1378          }
1379          }
1380 <        { // ( ... )+
1381 <        int _cnt130=0;
1382 <        for (;;) {
1383 <                if (((LA(1) >= 0x30 /* '0' */  && LA(1) <= 0x39 /* '9' */ ))) {
1384 <                        mDigit(false);
1380 >        {
1381 >        switch ( LA(1)) {
1382 >        case 0x2e /* '.' */ :
1383 >        {
1384 >                match('.' /* charlit */ );
1385 >                if ( inputState->guessing==0 ) {
1386 > #line 417 "MDParser.g"
1387 >                        _ttype = DOT;
1388 > #line 1389 "MDLexer.cpp"
1389                  }
1390 <                else {
1391 <                        if ( _cnt130>=1 ) { goto _loop130; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
1281 <                }
1282 <                
1283 <                _cnt130++;
1284 <        }
1285 <        _loop130:;
1286 <        }  // ( ... )+
1287 <        if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
1288 <           _token = makeToken(_ttype);
1289 <           _token->setText(text.substr(_begin, text.length()-_begin));
1290 <        }
1291 <        _returnToken = _token;
1292 <        _saveIndex=0;
1293 < }
1294 <
1295 < void MDLexer::mVocabulary(bool _createToken) {
1296 <        int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
1297 <        _ttype = Vocabulary;
1298 <        ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
1299 <        
1300 <        matchRange('\3',static_cast<unsigned char>('\377'));
1301 <        if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
1302 <           _token = makeToken(_ttype);
1303 <           _token->setText(text.substr(_begin, text.length()-_begin));
1304 <        }
1305 <        _returnToken = _token;
1306 <        _saveIndex=0;
1307 < }
1308 <
1309 < void MDLexer::mNumber(bool _createToken) {
1310 <        int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
1311 <        _ttype = Number;
1312 <        ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
1313 <        
1314 <        bool synPredMatched137 = false;
1315 <        if ((((LA(1) >= 0x30 /* '0' */  && LA(1) <= 0x39 /* '9' */ )) && (_tokenSet_6.member(LA(2))) && (true))) {
1316 <                int _m137 = mark();
1317 <                synPredMatched137 = true;
1318 <                inputState->guessing++;
1319 <                try {
1320 <                        {
1390 >                {
1391 >                if (((LA(1) >= 0x30 /* '0' */  && LA(1) <= 0x39 /* '9' */ ))) {
1392                          { // ( ... )+
1393 <                        int _cnt135=0;
1393 >                        int _cnt140=0;
1394                          for (;;) {
1395                                  if (((LA(1) >= 0x30 /* '0' */  && LA(1) <= 0x39 /* '9' */ ))) {
1396 <                                        mDigit(false);
1396 >                                        matchRange('0','9');
1397                                  }
1398                                  else {
1399 <                                        if ( _cnt135>=1 ) { goto _loop135; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
1399 >                                        if ( _cnt140>=1 ) { goto _loop140; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
1400                                  }
1401                                  
1402 <                                _cnt135++;
1402 >                                _cnt140++;
1403                          }
1404 <                        _loop135:;
1404 >                        _loop140:;
1405                          }  // ( ... )+
1406                          {
1407 <                        switch ( LA(1)) {
1408 <                        case 0x2e /* '.' */ :
1338 <                        {
1339 <                                match('.' /* charlit */ );
1340 <                                break;
1407 >                        if ((_tokenSet_6.member(LA(1))) && (_tokenSet_7.member(LA(2)))) {
1408 >                                mEXPONENT(false);
1409                          }
1410 <                        case 0x65 /* 'e' */ :
1343 <                        {
1344 <                                match('e' /* charlit */ );
1345 <                                break;
1410 >                        else {
1411                          }
1412 <                        case 0x45 /* 'E' */ :
1348 <                        {
1349 <                                match('E' /* charlit */ );
1350 <                                break;
1412 >                        
1413                          }
1352                        case 0x64 /* 'd' */ :
1414                          {
1415 <                                match('d' /* charlit */ );
1416 <                                break;
1415 >                        if ((_tokenSet_8.member(LA(1)))) {
1416 >                                mFLOAT_SUFFIX(true);
1417 >                                f1=_returnToken;
1418 >                                if ( inputState->guessing==0 ) {
1419 > #line 418 "MDParser.g"
1420 >                                        t=f1;
1421 > #line 1422 "MDLexer.cpp"
1422 >                                }
1423                          }
1424 <                        case 0x44 /* 'D' */ :
1358 <                        {
1359 <                                match('D' /* charlit */ );
1360 <                                break;
1424 >                        else {
1425                          }
1426 <                        default:
1363 <                        {
1364 <                                throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
1426 >                        
1427                          }
1428 +                        if ( inputState->guessing==0 ) {
1429 + #line 419 "MDParser.g"
1430 +                                
1431 +                                                                        if ( t &&
1432 +                                                                                  (t->getText().find('f') != ANTLR_USE_NAMESPACE(std)string::npos ||
1433 +                                                                                        t->getText().find('F') != ANTLR_USE_NAMESPACE(std)string::npos ) ) {
1434 +                                                                                _ttype = NUM_FLOAT;
1435 +                                                                        }
1436 +                                                                        else {
1437 +                                                                                _ttype = NUM_DOUBLE; // assume double
1438 +                                                                        }
1439 +                                                                
1440 + #line 1441 "MDLexer.cpp"
1441                          }
1367                        }
1368                        }
1442                  }
1443 <                catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& pe) {
1371 <                        synPredMatched137 = false;
1443 >                else {
1444                  }
1445 <                rewind(_m137);
1374 <                inputState->guessing--;
1375 <        }
1376 <        if ( synPredMatched137 ) {
1377 <                { // ( ... )+
1378 <                int _cnt139=0;
1379 <                for (;;) {
1380 <                        if (((LA(1) >= 0x30 /* '0' */  && LA(1) <= 0x39 /* '9' */ ))) {
1381 <                                mDigit(false);
1382 <                        }
1383 <                        else {
1384 <                                if ( _cnt139>=1 ) { goto _loop139; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
1385 <                        }
1386 <                        
1387 <                        _cnt139++;
1445 >                
1446                  }
1447 <                _loop139:;
1448 <                }  // ( ... )+
1447 >                break;
1448 >        }
1449 >        case 0x30 /* '0' */ :
1450 >        case 0x31 /* '1' */ :
1451 >        case 0x32 /* '2' */ :
1452 >        case 0x33 /* '3' */ :
1453 >        case 0x34 /* '4' */ :
1454 >        case 0x35 /* '5' */ :
1455 >        case 0x36 /* '6' */ :
1456 >        case 0x37 /* '7' */ :
1457 >        case 0x38 /* '8' */ :
1458 >        case 0x39 /* '9' */ :
1459 >        {
1460                  {
1461                  switch ( LA(1)) {
1462 <                case 0x2e /* '.' */ :
1462 >                case 0x30 /* '0' */ :
1463                  {
1464 <                        match('.' /* charlit */ );
1465 <                        { // ( ... )*
1466 <                        for (;;) {
1467 <                                if (((LA(1) >= 0x30 /* '0' */  && LA(1) <= 0x39 /* '9' */ ))) {
1468 <                                        mDigit(false);
1464 >                        match('0' /* charlit */ );
1465 >                        if ( inputState->guessing==0 ) {
1466 > #line 431 "MDParser.g"
1467 >                                isDecimal = true;
1468 > #line 1469 "MDLexer.cpp"
1469 >                        }
1470 >                        {
1471 >                        if ((LA(1) == 0x58 /* 'X' */  || LA(1) == 0x78 /* 'x' */ )) {
1472 >                                {
1473 >                                switch ( LA(1)) {
1474 >                                case 0x78 /* 'x' */ :
1475 >                                {
1476 >                                        match('x' /* charlit */ );
1477 >                                        break;
1478                                  }
1479 <                                else {
1480 <                                        goto _loop142;
1479 >                                case 0x58 /* 'X' */ :
1480 >                                {
1481 >                                        match('X' /* charlit */ );
1482 >                                        break;
1483                                  }
1484 <                                
1484 >                                default:
1485 >                                {
1486 >                                        throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
1487 >                                }
1488 >                                }
1489 >                                }
1490 >                                { // ( ... )+
1491 >                                int _cnt147=0;
1492 >                                for (;;) {
1493 >                                        if ((_tokenSet_9.member(LA(1))) && (true) && (true)) {
1494 >                                                mHEX_DIGIT(false);
1495 >                                        }
1496 >                                        else {
1497 >                                                if ( _cnt147>=1 ) { goto _loop147; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
1498 >                                        }
1499 >                                        
1500 >                                        _cnt147++;
1501 >                                }
1502 >                                _loop147:;
1503 >                                }  // ( ... )+
1504                          }
1406                        _loop142:;
1407                        } // ( ... )*
1408                        {
1409                        if ((_tokenSet_7.member(LA(1)))) {
1410                                mExponent(false);
1411                        }
1505                          else {
1506 <                        }
1507 <                        
1506 >                                bool synPredMatched152 = false;
1507 >                                if ((((LA(1) >= 0x30 /* '0' */  && LA(1) <= 0x39 /* '9' */ )) && (true) && (true))) {
1508 >                                        int _m152 = mark();
1509 >                                        synPredMatched152 = true;
1510 >                                        inputState->guessing++;
1511 >                                        try {
1512 >                                                {
1513 >                                                { // ( ... )+
1514 >                                                int _cnt150=0;
1515 >                                                for (;;) {
1516 >                                                        if (((LA(1) >= 0x30 /* '0' */  && LA(1) <= 0x39 /* '9' */ ))) {
1517 >                                                                matchRange('0','9');
1518 >                                                        }
1519 >                                                        else {
1520 >                                                                if ( _cnt150>=1 ) { goto _loop150; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
1521 >                                                        }
1522 >                                                        
1523 >                                                        _cnt150++;
1524 >                                                }
1525 >                                                _loop150:;
1526 >                                                }  // ( ... )+
1527 >                                                {
1528 >                                                if ((_tokenSet_6.member(LA(1))) && (_tokenSet_7.member(LA(2)))) {
1529 >                                                        mEXPONENT(false);
1530 >                                                }
1531 >                                                else if ((LA(1) == 0x2e /* '.' */ )) {
1532 >                                                        match('.' /* charlit */ );
1533 >                                                }
1534 >                                                else if ((_tokenSet_8.member(LA(1))) && (true)) {
1535 >                                                        mFLOAT_SUFFIX(false);
1536 >                                                }
1537 >                                                else {
1538 >                                                        throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
1539 >                                                }
1540 >                                                
1541 >                                                }
1542 >                                                }
1543 >                                        }
1544 >                                        catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& pe) {
1545 >                                                synPredMatched152 = false;
1546 >                                        }
1547 >                                        rewind(_m152);
1548 >                                        inputState->guessing--;
1549 >                                }
1550 >                                if ( synPredMatched152 ) {
1551 >                                        { // ( ... )+
1552 >                                        int _cnt154=0;
1553 >                                        for (;;) {
1554 >                                                if (((LA(1) >= 0x30 /* '0' */  && LA(1) <= 0x39 /* '9' */ ))) {
1555 >                                                        matchRange('0','9');
1556 >                                                }
1557 >                                                else {
1558 >                                                        if ( _cnt154>=1 ) { goto _loop154; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
1559 >                                                }
1560 >                                                
1561 >                                                _cnt154++;
1562 >                                        }
1563 >                                        _loop154:;
1564 >                                        }  // ( ... )+
1565 >                                }
1566 >                                else if (((LA(1) >= 0x30 /* '0' */  && LA(1) <= 0x37 /* '7' */ )) && (true) && (true)) {
1567 >                                        { // ( ... )+
1568 >                                        int _cnt156=0;
1569 >                                        for (;;) {
1570 >                                                if (((LA(1) >= 0x30 /* '0' */  && LA(1) <= 0x37 /* '7' */ ))) {
1571 >                                                        matchRange('0','7');
1572 >                                                }
1573 >                                                else {
1574 >                                                        if ( _cnt156>=1 ) { goto _loop156; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
1575 >                                                }
1576 >                                                
1577 >                                                _cnt156++;
1578 >                                        }
1579 >                                        _loop156:;
1580 >                                        }  // ( ... )+
1581 >                                }
1582 >                                else {
1583 >                                }
1584                          }
1416                        if ( inputState->guessing==0 ) {
1417 #line 451 "MDParser.g"
1418                                _ttype = FLOATONE;
1419 #line 1420 "MDLexer.cpp"
1585                          }
1586                          break;
1587                  }
1588 <                case 0x44 /* 'D' */ :
1589 <                case 0x45 /* 'E' */ :
1590 <                case 0x64 /* 'd' */ :
1591 <                case 0x65 /* 'e' */ :
1588 >                case 0x31 /* '1' */ :
1589 >                case 0x32 /* '2' */ :
1590 >                case 0x33 /* '3' */ :
1591 >                case 0x34 /* '4' */ :
1592 >                case 0x35 /* '5' */ :
1593 >                case 0x36 /* '6' */ :
1594 >                case 0x37 /* '7' */ :
1595 >                case 0x38 /* '8' */ :
1596 >                case 0x39 /* '9' */ :
1597                  {
1598 <                        mExponent(false);
1598 >                        {
1599 >                        matchRange('1','9');
1600 >                        }
1601 >                        { // ( ... )*
1602 >                        for (;;) {
1603 >                                if (((LA(1) >= 0x30 /* '0' */  && LA(1) <= 0x39 /* '9' */ ))) {
1604 >                                        matchRange('0','9');
1605 >                                }
1606 >                                else {
1607 >                                        goto _loop159;
1608 >                                }
1609 >                                
1610 >                        }
1611 >                        _loop159:;
1612 >                        } // ( ... )*
1613                          if ( inputState->guessing==0 ) {
1614 < #line 452 "MDParser.g"
1615 <                                _ttype = FLOATTWO;
1616 < #line 1433 "MDLexer.cpp"
1614 > #line 448 "MDParser.g"
1615 >                                isDecimal=true;
1616 > #line 1617 "MDLexer.cpp"
1617                          }
1618                          break;
1619                  }
# Line 1440 | Line 1624 | void MDLexer::mNumber(bool _createToken) {
1624                  }
1625                  }
1626                  {
1627 <                switch ( LA(1)) {
1444 <                case 0x46 /* 'F' */ :
1445 <                case 0x66 /* 'f' */ :
1446 <                {
1447 <                        mFloatSuffix(false);
1448 <                        break;
1449 <                }
1450 <                case 0x4c /* 'L' */ :
1451 <                case 0x6c /* 'l' */ :
1452 <                {
1453 <                        mLongSuffix(false);
1454 <                        break;
1455 <                }
1456 <                default:
1627 >                if ((LA(1) == 0x4c /* 'L' */  || LA(1) == 0x6c /* 'l' */ )) {
1628                          {
1458                        }
1459                }
1460                }
1461        }
1462        else if ((LA(1) == 0x30 /* '0' */ ) && (LA(2) == 0x58 /* 'X' */  || LA(2) == 0x78 /* 'x' */ )) {
1463                match('0' /* charlit */ );
1464                {
1465                switch ( LA(1)) {
1466                case 0x78 /* 'x' */ :
1467                {
1468                        match('x' /* charlit */ );
1469                        break;
1470                }
1471                case 0x58 /* 'X' */ :
1472                {
1473                        match('X' /* charlit */ );
1474                        break;
1475                }
1476                default:
1477                {
1478                        throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
1479                }
1480                }
1481                }
1482                { // ( ... )+
1483                int _cnt160=0;
1484                for (;;) {
1629                          switch ( LA(1)) {
1630 <                        case 0x61 /* 'a' */ :
1487 <                        case 0x62 /* 'b' */ :
1488 <                        case 0x63 /* 'c' */ :
1489 <                        case 0x64 /* 'd' */ :
1490 <                        case 0x65 /* 'e' */ :
1491 <                        case 0x66 /* 'f' */ :
1630 >                        case 0x6c /* 'l' */ :
1631                          {
1632 <                                matchRange('a','f');
1632 >                                match('l' /* charlit */ );
1633                                  break;
1634                          }
1635 <                        case 0x41 /* 'A' */ :
1497 <                        case 0x42 /* 'B' */ :
1498 <                        case 0x43 /* 'C' */ :
1499 <                        case 0x44 /* 'D' */ :
1500 <                        case 0x45 /* 'E' */ :
1501 <                        case 0x46 /* 'F' */ :
1635 >                        case 0x4c /* 'L' */ :
1636                          {
1637 <                                matchRange('A','F');
1637 >                                match('L' /* charlit */ );
1638                                  break;
1639                          }
1506                        case 0x30 /* '0' */ :
1507                        case 0x31 /* '1' */ :
1508                        case 0x32 /* '2' */ :
1509                        case 0x33 /* '3' */ :
1510                        case 0x34 /* '4' */ :
1511                        case 0x35 /* '5' */ :
1512                        case 0x36 /* '6' */ :
1513                        case 0x37 /* '7' */ :
1514                        case 0x38 /* '8' */ :
1515                        case 0x39 /* '9' */ :
1516                        {
1517                                mDigit(false);
1518                                break;
1519                        }
1640                          default:
1641                          {
1642 <                                if ( _cnt160>=1 ) { goto _loop160; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
1642 >                                throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
1643                          }
1644                          }
1525                        _cnt160++;
1526                }
1527                _loop160:;
1528                }  // ( ... )+
1529                { // ( ... )*
1530                for (;;) {
1531                        switch ( LA(1)) {
1532                        case 0x4c /* 'L' */ :
1533                        case 0x6c /* 'l' */ :
1534                        {
1535                                mLongSuffix(false);
1536                                break;
1645                          }
1646 <                        case 0x55 /* 'U' */ :
1647 <                        case 0x75 /* 'u' */ :
1648 <                        {
1649 <                                mUnsignedSuffix(false);
1542 <                                break;
1646 >                        if ( inputState->guessing==0 ) {
1647 > #line 450 "MDParser.g"
1648 >                                _ttype = NUM_LONG;
1649 > #line 1650 "MDLexer.cpp"
1650                          }
1651 <                        default:
1651 >                }
1652 >                else if (((_tokenSet_10.member(LA(1))))&&(isDecimal)) {
1653                          {
1654 <                                goto _loop162;
1654 >                        if ((_tokenSet_6.member(LA(1))) && (_tokenSet_7.member(LA(2)))) {
1655 >                                mEXPONENT(false);
1656 >                                {
1657 >                                if ((_tokenSet_8.member(LA(1)))) {
1658 >                                        mFLOAT_SUFFIX(true);
1659 >                                        f3=_returnToken;
1660 >                                        if ( inputState->guessing==0 ) {
1661 > #line 455 "MDParser.g"
1662 >                                                t=f3;
1663 > #line 1664 "MDLexer.cpp"
1664 >                                        }
1665 >                                }
1666 >                                else {
1667 >                                }
1668 >                                
1669 >                                }
1670                          }
1671 <                        }
1672 <                }
1673 <                _loop162:;
1674 <                } // ( ... )*
1675 <                if ( inputState->guessing==0 ) {
1676 < #line 480 "MDParser.g"
1677 <                        _ttype = HEXADECIMALINT;
1678 < #line 1556 "MDLexer.cpp"
1679 <                }
1680 <        }
1681 <        else if ((LA(1) == 0x2e /* '.' */ )) {
1559 <                match('.' /* charlit */ );
1560 <                if ( inputState->guessing==0 ) {
1561 < #line 458 "MDParser.g"
1562 <                        _ttype = DOT;
1563 < #line 1564 "MDLexer.cpp"
1564 <                }
1565 <                {
1566 <                if (((LA(1) >= 0x30 /* '0' */  && LA(1) <= 0x39 /* '9' */ ))) {
1567 <                        { // ( ... )+
1568 <                        int _cnt147=0;
1569 <                        for (;;) {
1570 <                                if (((LA(1) >= 0x30 /* '0' */  && LA(1) <= 0x39 /* '9' */ ))) {
1571 <                                        mDigit(false);
1671 >                        else if ((LA(1) == 0x2e /* '.' */ )) {
1672 >                                match('.' /* charlit */ );
1673 >                                { // ( ... )*
1674 >                                for (;;) {
1675 >                                        if (((LA(1) >= 0x30 /* '0' */  && LA(1) <= 0x39 /* '9' */ ))) {
1676 >                                                matchRange('0','9');
1677 >                                        }
1678 >                                        else {
1679 >                                                goto _loop164;
1680 >                                        }
1681 >                                        
1682                                  }
1683 +                                _loop164:;
1684 +                                } // ( ... )*
1685 +                                {
1686 +                                if ((_tokenSet_6.member(LA(1))) && (_tokenSet_7.member(LA(2)))) {
1687 +                                        mEXPONENT(false);
1688 +                                }
1689                                  else {
1574                                        if ( _cnt147>=1 ) { goto _loop147; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
1690                                  }
1691                                  
1692 <                                _cnt147++;
1692 >                                }
1693 >                                {
1694 >                                if ((_tokenSet_8.member(LA(1)))) {
1695 >                                        mFLOAT_SUFFIX(true);
1696 >                                        f2=_returnToken;
1697 >                                        if ( inputState->guessing==0 ) {
1698 > #line 454 "MDParser.g"
1699 >                                                t=f2;
1700 > #line 1701 "MDLexer.cpp"
1701 >                                        }
1702 >                                }
1703 >                                else {
1704 >                                }
1705 >                                
1706 >                                }
1707                          }
1708 <                        _loop147:;
1709 <                        }  // ( ... )+
1710 <                        {
1711 <                        if ((_tokenSet_7.member(LA(1)))) {
1712 <                                mExponent(false);
1708 >                        else if ((_tokenSet_8.member(LA(1))) && (true)) {
1709 >                                mFLOAT_SUFFIX(true);
1710 >                                f4=_returnToken;
1711 >                                if ( inputState->guessing==0 ) {
1712 > #line 456 "MDParser.g"
1713 >                                        t=f4;
1714 > #line 1715 "MDLexer.cpp"
1715 >                                }
1716                          }
1717                          else {
1718 +                                throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
1719                          }
1720                          
1721                          }
1722                          if ( inputState->guessing==0 ) {
1723 < #line 459 "MDParser.g"
1724 <                                _ttype = FLOATONE;
1725 < #line 1593 "MDLexer.cpp"
1723 > #line 458 "MDParser.g"
1724 >                                
1725 >                                                                        if ( t &&
1726 >                                                                                  (t->getText().find('f') != ANTLR_USE_NAMESPACE(std)string::npos ||
1727 >                                                                                        t->getText().find('F') != ANTLR_USE_NAMESPACE(std)string::npos ) ) {
1728 >                                                                                _ttype = NUM_FLOAT;
1729 >                                                                        }
1730 >                                                                        else {
1731 >                                                                                _ttype = NUM_DOUBLE; // assume double
1732 >                                                                        }
1733 >                                                                
1734 > #line 1735 "MDLexer.cpp"
1735                          }
1594                        {
1595                        switch ( LA(1)) {
1596                        case 0x46 /* 'F' */ :
1597                        case 0x66 /* 'f' */ :
1598                        {
1599                                mFloatSuffix(false);
1600                                break;
1601                        }
1602                        case 0x4c /* 'L' */ :
1603                        case 0x6c /* 'l' */ :
1604                        {
1605                                mLongSuffix(false);
1606                                break;
1607                        }
1608                        default:
1609                                {
1610                                }
1611                        }
1612                        }
1736                  }
1737                  else {
1738                  }
1739                  
1740                  }
1741 +                break;
1742          }
1743 <        else if ((LA(1) == 0x30 /* '0' */ ) && (true) && (true)) {
1744 <                match('0' /* charlit */ );
1745 <                { // ( ... )*
1622 <                for (;;) {
1623 <                        if (((LA(1) >= 0x30 /* '0' */  && LA(1) <= 0x37 /* '7' */ ))) {
1624 <                                matchRange('0','7');
1625 <                        }
1626 <                        else {
1627 <                                goto _loop151;
1628 <                        }
1629 <                        
1630 <                }
1631 <                _loop151:;
1632 <                } // ( ... )*
1633 <                { // ( ... )*
1634 <                for (;;) {
1635 <                        switch ( LA(1)) {
1636 <                        case 0x4c /* 'L' */ :
1637 <                        case 0x6c /* 'l' */ :
1638 <                        {
1639 <                                mLongSuffix(false);
1640 <                                break;
1641 <                        }
1642 <                        case 0x55 /* 'U' */ :
1643 <                        case 0x75 /* 'u' */ :
1644 <                        {
1645 <                                mUnsignedSuffix(false);
1646 <                                break;
1647 <                        }
1648 <                        default:
1649 <                        {
1650 <                                goto _loop153;
1651 <                        }
1652 <                        }
1653 <                }
1654 <                _loop153:;
1655 <                } // ( ... )*
1656 <                if ( inputState->guessing==0 ) {
1657 < #line 469 "MDParser.g"
1658 <                        _ttype = OCTALINT;
1659 < #line 1660 "MDLexer.cpp"
1660 <                }
1743 >        default:
1744 >        {
1745 >                throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
1746          }
1662        else if (((LA(1) >= 0x31 /* '1' */  && LA(1) <= 0x39 /* '9' */ )) && (true) && (true)) {
1663                matchRange('1','9');
1664                { // ( ... )*
1665                for (;;) {
1666                        if (((LA(1) >= 0x30 /* '0' */  && LA(1) <= 0x39 /* '9' */ ))) {
1667                                mDigit(false);
1668                        }
1669                        else {
1670                                goto _loop155;
1671                        }
1672                        
1673                }
1674                _loop155:;
1675                } // ( ... )*
1676                { // ( ... )*
1677                for (;;) {
1678                        switch ( LA(1)) {
1679                        case 0x4c /* 'L' */ :
1680                        case 0x6c /* 'l' */ :
1681                        {
1682                                mLongSuffix(false);
1683                                break;
1684                        }
1685                        case 0x55 /* 'U' */ :
1686                        case 0x75 /* 'u' */ :
1687                        {
1688                                mUnsignedSuffix(false);
1689                                break;
1690                        }
1691                        default:
1692                        {
1693                                goto _loop157;
1694                        }
1695                        }
1696                }
1697                _loop157:;
1698                } // ( ... )*
1699                if ( inputState->guessing==0 ) {
1700 #line 474 "MDParser.g"
1701                        _ttype = DECIMALINT;
1702 #line 1703 "MDLexer.cpp"
1703                }
1747          }
1705        else {
1706                throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
1748          }
1708        
1749          if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
1750             _token = makeToken(_ttype);
1751             _token->setText(text.substr(_begin, text.length()-_begin));
# Line 1714 | Line 1754 | void MDLexer::mNumber(bool _createToken) {
1754          _saveIndex=0;
1755   }
1756  
1757 < void MDLexer::mID(bool _createToken) {
1757 > void MDLexer::mEXPONENT(bool _createToken) {
1758          int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
1759 <        _ttype = ID;
1759 >        _ttype = EXPONENT;
1760          ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
1761          
1762          {
1763          switch ( LA(1)) {
1724        case 0x61 /* 'a' */ :
1725        case 0x62 /* 'b' */ :
1726        case 0x63 /* 'c' */ :
1727        case 0x64 /* 'd' */ :
1764          case 0x65 /* 'e' */ :
1729        case 0x66 /* 'f' */ :
1730        case 0x67 /* 'g' */ :
1731        case 0x68 /* 'h' */ :
1732        case 0x69 /* 'i' */ :
1733        case 0x6a /* 'j' */ :
1734        case 0x6b /* 'k' */ :
1735        case 0x6c /* 'l' */ :
1736        case 0x6d /* 'm' */ :
1737        case 0x6e /* 'n' */ :
1738        case 0x6f /* 'o' */ :
1739        case 0x70 /* 'p' */ :
1740        case 0x71 /* 'q' */ :
1741        case 0x72 /* 'r' */ :
1742        case 0x73 /* 's' */ :
1743        case 0x74 /* 't' */ :
1744        case 0x75 /* 'u' */ :
1745        case 0x76 /* 'v' */ :
1746        case 0x77 /* 'w' */ :
1747        case 0x78 /* 'x' */ :
1748        case 0x79 /* 'y' */ :
1749        case 0x7a /* 'z' */ :
1765          {
1766 <                matchRange('a','z');
1766 >                match('e' /* charlit */ );
1767                  break;
1768          }
1754        case 0x41 /* 'A' */ :
1755        case 0x42 /* 'B' */ :
1756        case 0x43 /* 'C' */ :
1757        case 0x44 /* 'D' */ :
1769          case 0x45 /* 'E' */ :
1759        case 0x46 /* 'F' */ :
1760        case 0x47 /* 'G' */ :
1761        case 0x48 /* 'H' */ :
1762        case 0x49 /* 'I' */ :
1763        case 0x4a /* 'J' */ :
1764        case 0x4b /* 'K' */ :
1765        case 0x4c /* 'L' */ :
1766        case 0x4d /* 'M' */ :
1767        case 0x4e /* 'N' */ :
1768        case 0x4f /* 'O' */ :
1769        case 0x50 /* 'P' */ :
1770        case 0x51 /* 'Q' */ :
1771        case 0x52 /* 'R' */ :
1772        case 0x53 /* 'S' */ :
1773        case 0x54 /* 'T' */ :
1774        case 0x55 /* 'U' */ :
1775        case 0x56 /* 'V' */ :
1776        case 0x57 /* 'W' */ :
1777        case 0x58 /* 'X' */ :
1778        case 0x59 /* 'Y' */ :
1779        case 0x5a /* 'Z' */ :
1770          {
1771 <                matchRange('A','Z');
1771 >                match('E' /* charlit */ );
1772                  break;
1773          }
1774 <        case 0x5f /* '_' */ :
1774 >        case 0x64 /* 'd' */ :
1775          {
1776 <                match('_' /* charlit */ );
1776 >                match('d' /* charlit */ );
1777                  break;
1778          }
1779 +        case 0x44 /* 'D' */ :
1780 +        {
1781 +                match('D' /* charlit */ );
1782 +                break;
1783 +        }
1784          default:
1785          {
1786                  throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
1787          }
1788          }
1789          }
1790 <        { // ( ... )*
1790 >        {
1791 >        switch ( LA(1)) {
1792 >        case 0x2b /* '+' */ :
1793 >        {
1794 >                match('+' /* charlit */ );
1795 >                break;
1796 >        }
1797 >        case 0x2d /* '-' */ :
1798 >        {
1799 >                match('-' /* charlit */ );
1800 >                break;
1801 >        }
1802 >        case 0x30 /* '0' */ :
1803 >        case 0x31 /* '1' */ :
1804 >        case 0x32 /* '2' */ :
1805 >        case 0x33 /* '3' */ :
1806 >        case 0x34 /* '4' */ :
1807 >        case 0x35 /* '5' */ :
1808 >        case 0x36 /* '6' */ :
1809 >        case 0x37 /* '7' */ :
1810 >        case 0x38 /* '8' */ :
1811 >        case 0x39 /* '9' */ :
1812 >        {
1813 >                break;
1814 >        }
1815 >        default:
1816 >        {
1817 >                throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
1818 >        }
1819 >        }
1820 >        }
1821 >        { // ( ... )+
1822 >        int _cnt172=0;
1823          for (;;) {
1824 <                switch ( LA(1)) {
1798 <                case 0x61 /* 'a' */ :
1799 <                case 0x62 /* 'b' */ :
1800 <                case 0x63 /* 'c' */ :
1801 <                case 0x64 /* 'd' */ :
1802 <                case 0x65 /* 'e' */ :
1803 <                case 0x66 /* 'f' */ :
1804 <                case 0x67 /* 'g' */ :
1805 <                case 0x68 /* 'h' */ :
1806 <                case 0x69 /* 'i' */ :
1807 <                case 0x6a /* 'j' */ :
1808 <                case 0x6b /* 'k' */ :
1809 <                case 0x6c /* 'l' */ :
1810 <                case 0x6d /* 'm' */ :
1811 <                case 0x6e /* 'n' */ :
1812 <                case 0x6f /* 'o' */ :
1813 <                case 0x70 /* 'p' */ :
1814 <                case 0x71 /* 'q' */ :
1815 <                case 0x72 /* 'r' */ :
1816 <                case 0x73 /* 's' */ :
1817 <                case 0x74 /* 't' */ :
1818 <                case 0x75 /* 'u' */ :
1819 <                case 0x76 /* 'v' */ :
1820 <                case 0x77 /* 'w' */ :
1821 <                case 0x78 /* 'x' */ :
1822 <                case 0x79 /* 'y' */ :
1823 <                case 0x7a /* 'z' */ :
1824 <                {
1825 <                        matchRange('a','z');
1826 <                        break;
1827 <                }
1828 <                case 0x41 /* 'A' */ :
1829 <                case 0x42 /* 'B' */ :
1830 <                case 0x43 /* 'C' */ :
1831 <                case 0x44 /* 'D' */ :
1832 <                case 0x45 /* 'E' */ :
1833 <                case 0x46 /* 'F' */ :
1834 <                case 0x47 /* 'G' */ :
1835 <                case 0x48 /* 'H' */ :
1836 <                case 0x49 /* 'I' */ :
1837 <                case 0x4a /* 'J' */ :
1838 <                case 0x4b /* 'K' */ :
1839 <                case 0x4c /* 'L' */ :
1840 <                case 0x4d /* 'M' */ :
1841 <                case 0x4e /* 'N' */ :
1842 <                case 0x4f /* 'O' */ :
1843 <                case 0x50 /* 'P' */ :
1844 <                case 0x51 /* 'Q' */ :
1845 <                case 0x52 /* 'R' */ :
1846 <                case 0x53 /* 'S' */ :
1847 <                case 0x54 /* 'T' */ :
1848 <                case 0x55 /* 'U' */ :
1849 <                case 0x56 /* 'V' */ :
1850 <                case 0x57 /* 'W' */ :
1851 <                case 0x58 /* 'X' */ :
1852 <                case 0x59 /* 'Y' */ :
1853 <                case 0x5a /* 'Z' */ :
1854 <                {
1855 <                        matchRange('A','Z');
1856 <                        break;
1857 <                }
1858 <                case 0x5f /* '_' */ :
1859 <                {
1860 <                        match('_' /* charlit */ );
1861 <                        break;
1862 <                }
1863 <                case 0x30 /* '0' */ :
1864 <                case 0x31 /* '1' */ :
1865 <                case 0x32 /* '2' */ :
1866 <                case 0x33 /* '3' */ :
1867 <                case 0x34 /* '4' */ :
1868 <                case 0x35 /* '5' */ :
1869 <                case 0x36 /* '6' */ :
1870 <                case 0x37 /* '7' */ :
1871 <                case 0x38 /* '8' */ :
1872 <                case 0x39 /* '9' */ :
1873 <                {
1824 >                if (((LA(1) >= 0x30 /* '0' */  && LA(1) <= 0x39 /* '9' */ ))) {
1825                          matchRange('0','9');
1875                        break;
1826                  }
1827 <                default:
1828 <                {
1879 <                        goto _loop166;
1827 >                else {
1828 >                        if ( _cnt172>=1 ) { goto _loop172; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
1829                  }
1830 <                }
1830 >                
1831 >                _cnt172++;
1832          }
1833 <        _loop166:;
1834 <        } // ( ... )*
1885 <        _ttype = testLiteralsTable(_ttype);
1833 >        _loop172:;
1834 >        }  // ( ... )+
1835          if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
1836             _token = makeToken(_ttype);
1837             _token->setText(text.substr(_begin, text.length()-_begin));
# Line 1891 | Line 1840 | void MDLexer::mID(bool _createToken) {
1840          _saveIndex=0;
1841   }
1842  
1843 + void MDLexer::mFLOAT_SUFFIX(bool _createToken) {
1844 +        int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
1845 +        _ttype = FLOAT_SUFFIX;
1846 +        ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
1847 +        
1848 +        switch ( LA(1)) {
1849 +        case 0x66 /* 'f' */ :
1850 +        {
1851 +                match('f' /* charlit */ );
1852 +                break;
1853 +        }
1854 +        case 0x46 /* 'F' */ :
1855 +        {
1856 +                match('F' /* charlit */ );
1857 +                break;
1858 +        }
1859 +        case 0x64 /* 'd' */ :
1860 +        {
1861 +                match('d' /* charlit */ );
1862 +                break;
1863 +        }
1864 +        case 0x44 /* 'D' */ :
1865 +        {
1866 +                match('D' /* charlit */ );
1867 +                break;
1868 +        }
1869 +        default:
1870 +        {
1871 +                throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
1872 +        }
1873 +        }
1874 +        if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
1875 +           _token = makeToken(_ttype);
1876 +           _token->setText(text.substr(_begin, text.length()-_begin));
1877 +        }
1878 +        _returnToken = _token;
1879 +        _saveIndex=0;
1880 + }
1881  
1882 +
1883   const unsigned long MDLexer::_tokenSet_0_data_[] = { 4294958079UL, 4294966271UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
1884   // 0x0 0x1 0x2 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0xb 0xc 0xe 0xf 0x10 0x11 0x12
1885   // 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f   !
1886 < // \" # $ % & \' ( ) + , - . / 0 1 2 3 4 5 6 7
1886 > // \" # $ % & \' ( ) + , - . / 0 1 2 3 4 5
1887   const ANTLR_USE_NAMESPACE(antlr)BitSet MDLexer::_tokenSet_0(_tokenSet_0_data_,16);
1888   const unsigned long MDLexer::_tokenSet_1_data_[] = { 4294958079UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
1889   // 0x0 0x1 0x2 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0xb 0xc 0xe 0xf 0x10 0x11 0x12
1890   // 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f   !
1891 < // \" # $ % & \' ( ) * + , - . / 0 1 2 3 4 5 6 7
1891 > // \" # $ % & \' ( ) * + , - . / 0 1 2 3 4 5
1892   const ANTLR_USE_NAMESPACE(antlr)BitSet MDLexer::_tokenSet_1(_tokenSet_1_data_,16);
1893   const unsigned long MDLexer::_tokenSet_2_data_[] = { 0UL, 2164195460UL, 268435456UL, 22298694UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
1894 < // \" \' 0 1 2 3 4 5 6 7
1894 > // \" \' 0 1 2 3 4 5
1895   const ANTLR_USE_NAMESPACE(antlr)BitSet MDLexer::_tokenSet_2(_tokenSet_2_data_,10);
1896   const unsigned long MDLexer::_tokenSet_3_data_[] = { 4294958079UL, 4294967291UL, 4026531839UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
1897   // 0x0 0x1 0x2 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0xb 0xc 0xe 0xf 0x10 0x11 0x12
1898   // 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f   !
1899 < // # $ % & \' ( ) * + , - . / 0 1 2 3 4 5 6 7
1899 > // # $ % & \' ( ) * + , - . / 0 1 2 3 4 5
1900   const ANTLR_USE_NAMESPACE(antlr)BitSet MDLexer::_tokenSet_3(_tokenSet_3_data_,16);
1901   const unsigned long MDLexer::_tokenSet_4_data_[] = { 0UL, 67043456UL, 126UL, 126UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
1902 < // \' 0 1 2 3 4 5 6 7
1902 > // \' 0 1 2 3 4 5
1903   const ANTLR_USE_NAMESPACE(antlr)BitSet MDLexer::_tokenSet_4(_tokenSet_4_data_,10);
1904   const unsigned long MDLexer::_tokenSet_5_data_[] = { 4294967295UL, 4294967167UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
1905   // 0x0 0x1 0x2 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0xa 0xb 0xc 0xd 0xe 0xf 0x10
1906   // 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e
1907 < // 0x1f   ! \" # $ % & ( ) * + , - . / 0 1 2 3 4 5 6 7
1907 > // 0x1f   ! \" # $ % & ( ) * + , - . / 0 1 2 3 4 5
1908   const ANTLR_USE_NAMESPACE(antlr)BitSet MDLexer::_tokenSet_5(_tokenSet_5_data_,16);
1909 < const unsigned long MDLexer::_tokenSet_6_data_[] = { 0UL, 67059712UL, 48UL, 48UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
1922 < // . 0 1 2 3 4 5 6 7
1909 > const unsigned long MDLexer::_tokenSet_6_data_[] = { 0UL, 0UL, 48UL, 48UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
1910   const ANTLR_USE_NAMESPACE(antlr)BitSet MDLexer::_tokenSet_6(_tokenSet_6_data_,10);
1911 < const unsigned long MDLexer::_tokenSet_7_data_[] = { 0UL, 0UL, 48UL, 48UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
1911 > const unsigned long MDLexer::_tokenSet_7_data_[] = { 0UL, 67053568UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
1912 > // + - 0 1 2 3 4 5
1913   const ANTLR_USE_NAMESPACE(antlr)BitSet MDLexer::_tokenSet_7(_tokenSet_7_data_,10);
1914 + const unsigned long MDLexer::_tokenSet_8_data_[] = { 0UL, 0UL, 80UL, 80UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
1915 + const ANTLR_USE_NAMESPACE(antlr)BitSet MDLexer::_tokenSet_8(_tokenSet_8_data_,10);
1916 + const unsigned long MDLexer::_tokenSet_9_data_[] = { 0UL, 67043328UL, 126UL, 126UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
1917 + // 0 1 2 3 4 5
1918 + const ANTLR_USE_NAMESPACE(antlr)BitSet MDLexer::_tokenSet_9(_tokenSet_9_data_,10);
1919 + const unsigned long MDLexer::_tokenSet_10_data_[] = { 0UL, 16384UL, 112UL, 112UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
1920 + // .
1921 + const ANTLR_USE_NAMESPACE(antlr)BitSet MDLexer::_tokenSet_10(_tokenSet_10_data_,10);
1922  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines