ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/trunk/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 2040 by gezelter, Thu Nov 13 17:49:44 2014 UTC

# Line 1 | Line 1
1 < /* $ANTLR 2.7.5 (20050406): "MDParser.g" -> "MDLexer.cpp"$ */
1 > /* $ANTLR 2.7.7 (20141024): "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;
36 <        literals["component"] = 4;
37 <        literals["rigidBody"] = 11;
33 >        literals["flucQ"] = 23;
34 >        literals["satellites"] = 20;
35 >        literals["cutoffGroup"] = 14;
36 >        literals["RNEMD"] = 24;
37 >        literals["constraint"] = 15;
38 >        literals["distance"] = 16;
39 >        literals["rigidBody"] = 13;
40 >        literals["fragment"] = 17;
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["minimizer"] = 25;
43 >        literals["component"] = 4;
44 >        literals["center"] = 19;
45 >        literals["members"] = 18;
46 >        literals["position"] = 21;
47 >        literals["orientation"] = 22;
48 >        literals["bend"] = 10;
49 >        literals["torsion"] = 11;
50 >        literals["atom"] = 8;
51          literals["molecule"] = 5;
52 <        literals["atom"] = 7;
52 >        literals["restraint"] = 7;
53 >        literals["inversion"] = 12;
54 >        literals["bond"] = 9;
55   }
56  
57   ANTLR_USE_NAMESPACE(antlr)RefToken MDLexer::nextToken()
# Line 120 | Line 129 | ANTLR_USE_NAMESPACE(antlr)RefToken MDLexer::nextToken(
129                                  theRetToken=_returnToken;
130                                  break;
131                          }
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                        }
132                          case 0x9 /* '\t' */ :
133                          case 0xa /* '\n' */ :
134                          case 0xc /* '\14' */ :
# Line 161 | Line 158 | ANTLR_USE_NAMESPACE(antlr)RefToken MDLexer::nextToken(
158                                  theRetToken=_returnToken;
159                                  break;
160                          }
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                        }
161                          case 0x41 /* 'A' */ :
162                          case 0x42 /* 'B' */ :
163                          case 0x43 /* 'C' */ :
# Line 235 | Line 216 | ANTLR_USE_NAMESPACE(antlr)RefToken MDLexer::nextToken(
216                                  theRetToken=_returnToken;
217                                  break;
218                          }
219 +                        case 0x2b /* '+' */ :
220 +                        case 0x2d /* '-' */ :
221 +                        case 0x2e /* '.' */ :
222 +                        case 0x30 /* '0' */ :
223 +                        case 0x31 /* '1' */ :
224 +                        case 0x32 /* '2' */ :
225 +                        case 0x33 /* '3' */ :
226 +                        case 0x34 /* '4' */ :
227 +                        case 0x35 /* '5' */ :
228 +                        case 0x36 /* '6' */ :
229 +                        case 0x37 /* '7' */ :
230 +                        case 0x38 /* '8' */ :
231 +                        case 0x39 /* '9' */ :
232 +                        {
233 +                                mNUM_INT(true);
234 +                                theRetToken=_returnToken;
235 +                                break;
236 +                        }
237                          default:
238                                  if ((LA(1) == 0x2f /* '/' */ ) && (LA(2) == 0x2a /* '*' */ )) {
239                                          mComment(true);
# Line 419 | Line 418 | void MDLexer::mRCURLY(bool _createToken) {
418          ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
419          
420          match('}' /* charlit */ );
422        if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
423           _token = makeToken(_ttype);
424           _token->setText(text.substr(_begin, text.length()-_begin));
425        }
426        _returnToken = _token;
427        _saveIndex=0;
428 }
429
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 */ );
421          if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
422             _token = makeToken(_ttype);
423             _token->setText(text.substr(_begin, text.length()-_begin));
# Line 441 | Line 426 | void MDLexer::mPLUS(bool _createToken) {
426          _saveIndex=0;
427   }
428  
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
429   void MDLexer::mWhitespace(bool _createToken) {
430          int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
431          _ttype = Whitespace;
# Line 511 | Line 482 | void MDLexer::mWhitespace(bool _createToken) {
482                  
483                  }
484                  if ( inputState->guessing==0 ) {
485 < #line 262 "MDParser.g"
485 > #line 274 "MDParser.g"
486                          newline();
487 < #line 517 "MDLexer.cpp"
487 > #line 488 "MDLexer.cpp"
488                  }
489                  break;
490          }
# Line 539 | Line 510 | void MDLexer::mWhitespace(bool _createToken) {
510                  
511                  }
512                  if ( inputState->guessing==0 ) {
513 < #line 267 "MDParser.g"
513 > #line 279 "MDParser.g"
514                          printf("CPP_parser.g continuation line detected\n");
515                          deferredNewline();
516 < #line 546 "MDLexer.cpp"
516 > #line 517 "MDLexer.cpp"
517                  }
518                  break;
519          }
# Line 553 | Line 524 | void MDLexer::mWhitespace(bool _createToken) {
524          }
525          }
526          if ( inputState->guessing==0 ) {
527 < #line 270 "MDParser.g"
527 > #line 282 "MDParser.g"
528                  _ttype = ANTLR_USE_NAMESPACE(antlr)Token::SKIP;
529 < #line 559 "MDLexer.cpp"
529 > #line 530 "MDLexer.cpp"
530          }
531          if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
532             _token = makeToken(_ttype);
# Line 579 | Line 550 | void MDLexer::mComment(bool _createToken) {
550                  else if ((LA(1) == 0xa /* '\n' */  || LA(1) == 0xd /* '\r' */ )) {
551                          mEndOfLine(false);
552                          if ( inputState->guessing==0 ) {
553 < #line 277 "MDParser.g"
553 > #line 289 "MDParser.g"
554                                  deferredNewline();
555 < #line 585 "MDLexer.cpp"
555 > #line 556 "MDLexer.cpp"
556                          }
557                  }
558                  else if ((_tokenSet_0.member(LA(1)))) {
# Line 590 | Line 561 | void MDLexer::mComment(bool _createToken) {
561                          }
562                  }
563                  else {
564 <                        goto _loop81;
564 >                        goto _loop101;
565                  }
566                  
567          }
568 <        _loop81:;
568 >        _loop101:;
569          } // ( ... )*
570          match("*/");
571          if ( inputState->guessing==0 ) {
572 < #line 280 "MDParser.g"
572 > #line 292 "MDParser.g"
573                  _ttype = ANTLR_USE_NAMESPACE(antlr)Token::SKIP;
574 < #line 604 "MDLexer.cpp"
574 > #line 575 "MDLexer.cpp"
575          }
576          if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
577             _token = makeToken(_ttype);
# Line 652 | Line 623 | void MDLexer::mCPPComment(bool _createToken) {
623                          }
624                  }
625                  else {
626 <                        goto _loop85;
626 >                        goto _loop105;
627                  }
628                  
629          }
630 <        _loop85:;
630 >        _loop105:;
631          } // ( ... )*
632          mEndOfLine(false);
633          if ( inputState->guessing==0 ) {
634 < #line 286 "MDParser.g"
634 > #line 298 "MDParser.g"
635                  _ttype = ANTLR_USE_NAMESPACE(antlr)Token::SKIP; newline();
636 < #line 666 "MDLexer.cpp"
636 > #line 637 "MDLexer.cpp"
637          }
638          if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
639             _token = makeToken(_ttype);
# Line 680 | Line 651 | void MDLexer::mPREPROC_DIRECTIVE(bool _createToken) {
651          match('#' /* charlit */ );
652          mLineDirective(false);
653          if ( inputState->guessing==0 ) {
654 < #line 293 "MDParser.g"
654 > #line 305 "MDParser.g"
655                  _ttype = ANTLR_USE_NAMESPACE(antlr)Token::SKIP; newline();
656 < #line 686 "MDLexer.cpp"
656 > #line 657 "MDLexer.cpp"
657          }
658          if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
659             _token = makeToken(_ttype);
# Line 700 | Line 671 | void MDLexer::mLineDirective(bool _createToken) {
671          ANTLR_USE_NAMESPACE(antlr)RefToken sl;
672          
673          if ( inputState->guessing==0 ) {
674 < #line 299 "MDParser.g"
674 > #line 311 "MDParser.g"
675                  
676                  deferredLineCount = 0;
677                  
678 < #line 708 "MDLexer.cpp"
678 > #line 679 "MDLexer.cpp"
679          }
680          {
681          switch ( LA(1)) {
# Line 726 | Line 697 | void MDLexer::mLineDirective(bool _createToken) {
697          }
698          }
699          { // ( ... )+
700 <        int _cnt90=0;
700 >        int _cnt110=0;
701          for (;;) {
702                  if ((LA(1) == 0x9 /* '\t' */  || LA(1) == 0xc /* '\14' */  || LA(1) == 0x20 /* ' ' */ )) {
703                          mSpace(false);
704                  }
705                  else {
706 <                        if ( _cnt90>=1 ) { goto _loop90; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
706 >                        if ( _cnt110>=1 ) { goto _loop110; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
707                  }
708                  
709 <                _cnt90++;
709 >                _cnt110++;
710          }
711 <        _loop90:;
711 >        _loop110:;
712          }  // ( ... )+
713          mDecimal(true);
714          n=_returnToken;
715          if ( inputState->guessing==0 ) {
716 < #line 304 "MDParser.g"
717 <                setLine(oopse::lexi_cast<int>(n->getText()) - 1);
718 < #line 748 "MDLexer.cpp"
716 > #line 316 "MDParser.g"
717 >                setLine(OpenMD::lexi_cast<int>(n->getText()) - 1);
718 > #line 719 "MDLexer.cpp"
719          }
720          { // ( ... )+
721 <        int _cnt92=0;
721 >        int _cnt112=0;
722          for (;;) {
723                  if ((LA(1) == 0x9 /* '\t' */  || LA(1) == 0xc /* '\14' */  || LA(1) == 0x20 /* ' ' */ )) {
724                          mSpace(false);
725                  }
726                  else {
727 <                        if ( _cnt92>=1 ) { goto _loop92; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
727 >                        if ( _cnt112>=1 ) { goto _loop112; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
728                  }
729                  
730 <                _cnt92++;
730 >                _cnt112++;
731          }
732 <        _loop92:;
732 >        _loop112:;
733          }  // ( ... )+
734          {
735          mStringLiteral(true);
736          sl=_returnToken;
737          }
738          if ( inputState->guessing==0 ) {
739 < #line 306 "MDParser.g"
739 > #line 318 "MDParser.g"
740                  std::string filename = sl->getText().substr(1,sl->getText().length()-2); observer->notify(filename);
741 < #line 771 "MDLexer.cpp"
741 > #line 742 "MDLexer.cpp"
742          }
743          { // ( ... )*
744          for (;;) {
745                  if ((LA(1) == 0x9 /* '\t' */  || LA(1) == 0xc /* '\14' */  || LA(1) == 0x20 /* ' ' */ )) {
746                          { // ( ... )+
747 <                        int _cnt96=0;
747 >                        int _cnt116=0;
748                          for (;;) {
749                                  if ((LA(1) == 0x9 /* '\t' */  || LA(1) == 0xc /* '\14' */  || LA(1) == 0x20 /* ' ' */ )) {
750                                          mSpace(false);
751                                  }
752                                  else {
753 <                                        if ( _cnt96>=1 ) { goto _loop96; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
753 >                                        if ( _cnt116>=1 ) { goto _loop116; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
754                                  }
755                                  
756 <                                _cnt96++;
756 >                                _cnt116++;
757                          }
758 <                        _loop96:;
758 >                        _loop116:;
759                          }  // ( ... )+
760                          mDecimal(false);
761                  }
762                  else {
763 <                        goto _loop97;
763 >                        goto _loop117;
764                  }
765                  
766          }
767 <        _loop97:;
767 >        _loop117:;
768          } // ( ... )*
769          mEndOfLine(false);
770          if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
# Line 846 | Line 817 | void MDLexer::mDecimal(bool _createToken) {
817          ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
818          
819          { // ( ... )+
820 <        int _cnt122=0;
820 >        int _cnt147=0;
821          for (;;) {
822                  if (((LA(1) >= 0x30 /* '0' */  && LA(1) <= 0x39 /* '9' */ ))) {
823                          matchRange('0','9');
824                  }
825                  else {
826 <                        if ( _cnt122>=1 ) { goto _loop122; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
826 >                        if ( _cnt147>=1 ) { goto _loop147; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
827                  }
828                  
829 <                _cnt122++;
829 >                _cnt147++;
830          }
831 <        _loop122:;
831 >        _loop147:;
832          }  // ( ... )+
833          if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
834             _token = makeToken(_ttype);
# Line 895 | Line 866 | void MDLexer::mStringLiteral(bool _createToken) {
866                          
867                          }
868                          if ( inputState->guessing==0 ) {
869 < #line 346 "MDParser.g"
869 > #line 358 "MDParser.g"
870                                  deferredNewline();
871 < #line 901 "MDLexer.cpp"
871 > #line 872 "MDLexer.cpp"
872                          }
873                  }
874                  else if ((_tokenSet_3.member(LA(1)))) {
# Line 906 | Line 877 | void MDLexer::mStringLiteral(bool _createToken) {
877                          }
878                  }
879                  else {
880 <                        goto _loop107;
880 >                        goto _loop127;
881                  }
882                  
883          }
884 <        _loop107:;
884 >        _loop127:;
885          } // ( ... )*
886          match('\"' /* charlit */ );
887          if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
# Line 1070 | Line 1041 | void MDLexer::mEscape(bool _createToken) {
1041          {
1042                  match('x' /* charlit */ );
1043                  { // ( ... )+
1044 <                int _cnt118=0;
1044 >                int _cnt138=0;
1045                  for (;;) {
1046                          if (((LA(1) >= 0x30 /* '0' */  && LA(1) <= 0x39 /* '9' */ )) && (_tokenSet_1.member(LA(2))) && (true)) {
1047                                  mDigit(false);
# Line 1082 | Line 1053 | void MDLexer::mEscape(bool _createToken) {
1053                                  matchRange('A','F');
1054                          }
1055                          else {
1056 <                                if ( _cnt118>=1 ) { goto _loop118; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
1056 >                                if ( _cnt138>=1 ) { goto _loop138; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
1057                          }
1058                          
1059 <                        _cnt118++;
1059 >                        _cnt138++;
1060                  }
1061 <                _loop118:;
1061 >                _loop138:;
1062                  }  // ( ... )+
1063                  break;
1064          }
# Line 1119 | Line 1090 | void MDLexer::mDigit(bool _createToken) {
1090          _saveIndex=0;
1091   }
1092  
1093 < void MDLexer::mLongSuffix(bool _createToken) {
1093 > void MDLexer::mVocabulary(bool _createToken) {
1094          int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
1095 <        _ttype = LongSuffix;
1095 >        _ttype = Vocabulary;
1096          ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
1097          
1098 <        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 <        }
1098 >        matchRange('\3',static_cast<unsigned char>('\377'));
1099          if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
1100             _token = makeToken(_ttype);
1101             _token->setText(text.substr(_begin, text.length()-_begin));
# Line 1148 | Line 1104 | void MDLexer::mLongSuffix(bool _createToken) {
1104          _saveIndex=0;
1105   }
1106  
1107 < void MDLexer::mUnsignedSuffix(bool _createToken) {
1107 > void MDLexer::mID(bool _createToken) {
1108          int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
1109 <        _ttype = UnsignedSuffix;
1109 >        _ttype = ID;
1110          ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
1111          
1112 +        {
1113          switch ( LA(1)) {
1114 +        case 0x61 /* 'a' */ :
1115 +        case 0x62 /* 'b' */ :
1116 +        case 0x63 /* 'c' */ :
1117 +        case 0x64 /* 'd' */ :
1118 +        case 0x65 /* 'e' */ :
1119 +        case 0x66 /* 'f' */ :
1120 +        case 0x67 /* 'g' */ :
1121 +        case 0x68 /* 'h' */ :
1122 +        case 0x69 /* 'i' */ :
1123 +        case 0x6a /* 'j' */ :
1124 +        case 0x6b /* 'k' */ :
1125 +        case 0x6c /* 'l' */ :
1126 +        case 0x6d /* 'm' */ :
1127 +        case 0x6e /* 'n' */ :
1128 +        case 0x6f /* 'o' */ :
1129 +        case 0x70 /* 'p' */ :
1130 +        case 0x71 /* 'q' */ :
1131 +        case 0x72 /* 'r' */ :
1132 +        case 0x73 /* 's' */ :
1133 +        case 0x74 /* 't' */ :
1134          case 0x75 /* 'u' */ :
1135 +        case 0x76 /* 'v' */ :
1136 +        case 0x77 /* 'w' */ :
1137 +        case 0x78 /* 'x' */ :
1138 +        case 0x79 /* 'y' */ :
1139 +        case 0x7a /* 'z' */ :
1140          {
1141 <                match('u' /* charlit */ );
1141 >                matchRange('a','z');
1142                  break;
1143          }
1144 +        case 0x41 /* 'A' */ :
1145 +        case 0x42 /* 'B' */ :
1146 +        case 0x43 /* 'C' */ :
1147 +        case 0x44 /* 'D' */ :
1148 +        case 0x45 /* 'E' */ :
1149 +        case 0x46 /* 'F' */ :
1150 +        case 0x47 /* 'G' */ :
1151 +        case 0x48 /* 'H' */ :
1152 +        case 0x49 /* 'I' */ :
1153 +        case 0x4a /* 'J' */ :
1154 +        case 0x4b /* 'K' */ :
1155 +        case 0x4c /* 'L' */ :
1156 +        case 0x4d /* 'M' */ :
1157 +        case 0x4e /* 'N' */ :
1158 +        case 0x4f /* 'O' */ :
1159 +        case 0x50 /* 'P' */ :
1160 +        case 0x51 /* 'Q' */ :
1161 +        case 0x52 /* 'R' */ :
1162 +        case 0x53 /* 'S' */ :
1163 +        case 0x54 /* 'T' */ :
1164          case 0x55 /* 'U' */ :
1165 +        case 0x56 /* 'V' */ :
1166 +        case 0x57 /* 'W' */ :
1167 +        case 0x58 /* 'X' */ :
1168 +        case 0x59 /* 'Y' */ :
1169 +        case 0x5a /* 'Z' */ :
1170          {
1171 <                match('U' /* charlit */ );
1171 >                matchRange('A','Z');
1172                  break;
1173          }
1174 <        default:
1174 >        case 0x5f /* '_' */ :
1175          {
1176 <                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 */ );
1176 >                match('_' /* charlit */ );
1177                  break;
1178          }
1191        case 0x46 /* 'F' */ :
1192        {
1193                match('F' /* charlit */ );
1194                break;
1195        }
1179          default:
1180          {
1181                  throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
1182          }
1183          }
1184 +        }
1185 +        { // ( ... )*
1186 +        for (;;) {
1187 +                switch ( LA(1)) {
1188 +                case 0x61 /* 'a' */ :
1189 +                case 0x62 /* 'b' */ :
1190 +                case 0x63 /* 'c' */ :
1191 +                case 0x64 /* 'd' */ :
1192 +                case 0x65 /* 'e' */ :
1193 +                case 0x66 /* 'f' */ :
1194 +                case 0x67 /* 'g' */ :
1195 +                case 0x68 /* 'h' */ :
1196 +                case 0x69 /* 'i' */ :
1197 +                case 0x6a /* 'j' */ :
1198 +                case 0x6b /* 'k' */ :
1199 +                case 0x6c /* 'l' */ :
1200 +                case 0x6d /* 'm' */ :
1201 +                case 0x6e /* 'n' */ :
1202 +                case 0x6f /* 'o' */ :
1203 +                case 0x70 /* 'p' */ :
1204 +                case 0x71 /* 'q' */ :
1205 +                case 0x72 /* 'r' */ :
1206 +                case 0x73 /* 's' */ :
1207 +                case 0x74 /* 't' */ :
1208 +                case 0x75 /* 'u' */ :
1209 +                case 0x76 /* 'v' */ :
1210 +                case 0x77 /* 'w' */ :
1211 +                case 0x78 /* 'x' */ :
1212 +                case 0x79 /* 'y' */ :
1213 +                case 0x7a /* 'z' */ :
1214 +                {
1215 +                        matchRange('a','z');
1216 +                        break;
1217 +                }
1218 +                case 0x41 /* 'A' */ :
1219 +                case 0x42 /* 'B' */ :
1220 +                case 0x43 /* 'C' */ :
1221 +                case 0x44 /* 'D' */ :
1222 +                case 0x45 /* 'E' */ :
1223 +                case 0x46 /* 'F' */ :
1224 +                case 0x47 /* 'G' */ :
1225 +                case 0x48 /* 'H' */ :
1226 +                case 0x49 /* 'I' */ :
1227 +                case 0x4a /* 'J' */ :
1228 +                case 0x4b /* 'K' */ :
1229 +                case 0x4c /* 'L' */ :
1230 +                case 0x4d /* 'M' */ :
1231 +                case 0x4e /* 'N' */ :
1232 +                case 0x4f /* 'O' */ :
1233 +                case 0x50 /* 'P' */ :
1234 +                case 0x51 /* 'Q' */ :
1235 +                case 0x52 /* 'R' */ :
1236 +                case 0x53 /* 'S' */ :
1237 +                case 0x54 /* 'T' */ :
1238 +                case 0x55 /* 'U' */ :
1239 +                case 0x56 /* 'V' */ :
1240 +                case 0x57 /* 'W' */ :
1241 +                case 0x58 /* 'X' */ :
1242 +                case 0x59 /* 'Y' */ :
1243 +                case 0x5a /* 'Z' */ :
1244 +                {
1245 +                        matchRange('A','Z');
1246 +                        break;
1247 +                }
1248 +                case 0x5f /* '_' */ :
1249 +                {
1250 +                        match('_' /* charlit */ );
1251 +                        break;
1252 +                }
1253 +                case 0x30 /* '0' */ :
1254 +                case 0x31 /* '1' */ :
1255 +                case 0x32 /* '2' */ :
1256 +                case 0x33 /* '3' */ :
1257 +                case 0x34 /* '4' */ :
1258 +                case 0x35 /* '5' */ :
1259 +                case 0x36 /* '6' */ :
1260 +                case 0x37 /* '7' */ :
1261 +                case 0x38 /* '8' */ :
1262 +                case 0x39 /* '9' */ :
1263 +                {
1264 +                        matchRange('0','9');
1265 +                        break;
1266 +                }
1267 +                default:
1268 +                {
1269 +                        goto _loop143;
1270 +                }
1271 +                }
1272 +        }
1273 +        _loop143:;
1274 +        } // ( ... )*
1275 +        _ttype = testLiteralsTable(_ttype);
1276          if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
1277             _token = makeToken(_ttype);
1278             _token->setText(text.substr(_begin, text.length()-_begin));
# Line 1206 | Line 1281 | void MDLexer::mFloatSuffix(bool _createToken) {
1281          _saveIndex=0;
1282   }
1283  
1284 < void MDLexer::mExponent(bool _createToken) {
1284 > void MDLexer::mHEX_DIGIT(bool _createToken) {
1285          int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
1286 <        _ttype = Exponent;
1286 >        _ttype = HEX_DIGIT;
1287          ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
1288          
1289          {
1290          switch ( LA(1)) {
1291 <        case 0x65 /* 'e' */ :
1291 >        case 0x30 /* '0' */ :
1292 >        case 0x31 /* '1' */ :
1293 >        case 0x32 /* '2' */ :
1294 >        case 0x33 /* '3' */ :
1295 >        case 0x34 /* '4' */ :
1296 >        case 0x35 /* '5' */ :
1297 >        case 0x36 /* '6' */ :
1298 >        case 0x37 /* '7' */ :
1299 >        case 0x38 /* '8' */ :
1300 >        case 0x39 /* '9' */ :
1301          {
1302 <                match('e' /* charlit */ );
1302 >                matchRange('0','9');
1303                  break;
1304          }
1305 +        case 0x41 /* 'A' */ :
1306 +        case 0x42 /* 'B' */ :
1307 +        case 0x43 /* 'C' */ :
1308 +        case 0x44 /* 'D' */ :
1309          case 0x45 /* 'E' */ :
1310 +        case 0x46 /* 'F' */ :
1311          {
1312 <                match('E' /* charlit */ );
1312 >                matchRange('A','F');
1313                  break;
1314          }
1315 +        case 0x61 /* 'a' */ :
1316 +        case 0x62 /* 'b' */ :
1317 +        case 0x63 /* 'c' */ :
1318          case 0x64 /* 'd' */ :
1319 +        case 0x65 /* 'e' */ :
1320 +        case 0x66 /* 'f' */ :
1321          {
1322 <                match('d' /* charlit */ );
1322 >                matchRange('a','f');
1323                  break;
1324          }
1231        case 0x44 /* 'D' */ :
1232        {
1233                match('D' /* charlit */ );
1234                break;
1235        }
1325          default:
1326          {
1327                  throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
1328          }
1329          }
1330          }
1331 +        if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
1332 +           _token = makeToken(_ttype);
1333 +           _token->setText(text.substr(_begin, text.length()-_begin));
1334 +        }
1335 +        _returnToken = _token;
1336 +        _saveIndex=0;
1337 + }
1338 +
1339 + void MDLexer::mNUM_INT(bool _createToken) {
1340 +        int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
1341 +        _ttype = NUM_INT;
1342 +        ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
1343 +        ANTLR_USE_NAMESPACE(antlr)RefToken f1;
1344 +        ANTLR_USE_NAMESPACE(antlr)RefToken f2;
1345 +        ANTLR_USE_NAMESPACE(antlr)RefToken f3;
1346 +        ANTLR_USE_NAMESPACE(antlr)RefToken f4;
1347 + #line 451 "MDParser.g"
1348 +        
1349 +                        bool isDecimal = false;
1350 +                        ANTLR_USE_NAMESPACE(antlr)RefToken t = ANTLR_USE_NAMESPACE(antlr)nullToken;
1351 +                
1352 + #line 1353 "MDLexer.cpp"
1353 +        
1354          {
1355          switch ( LA(1)) {
1356          case 0x2b /* '+' */ :
# Line 1251 | Line 1363 | void MDLexer::mExponent(bool _createToken) {
1363                  match('-' /* charlit */ );
1364                  break;
1365          }
1366 +        case 0x2e /* '.' */ :
1367          case 0x30 /* '0' */ :
1368          case 0x31 /* '1' */ :
1369          case 0x32 /* '2' */ :
# Line 1270 | Line 1383 | void MDLexer::mExponent(bool _createToken) {
1383          }
1384          }
1385          }
1386 <        { // ( ... )+
1387 <        int _cnt130=0;
1388 <        for (;;) {
1389 <                if (((LA(1) >= 0x30 /* '0' */  && LA(1) <= 0x39 /* '9' */ ))) {
1390 <                        mDigit(false);
1386 >        {
1387 >        switch ( LA(1)) {
1388 >        case 0x2e /* '.' */ :
1389 >        {
1390 >                match('.' /* charlit */ );
1391 >                if ( inputState->guessing==0 ) {
1392 > #line 458 "MDParser.g"
1393 >                        _ttype = DOT;
1394 > #line 1395 "MDLexer.cpp"
1395                  }
1396 <                else {
1397 <                        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 <                        {
1396 >                {
1397 >                if (((LA(1) >= 0x30 /* '0' */  && LA(1) <= 0x39 /* '9' */ ))) {
1398                          { // ( ... )+
1399 <                        int _cnt135=0;
1399 >                        int _cnt155=0;
1400                          for (;;) {
1401                                  if (((LA(1) >= 0x30 /* '0' */  && LA(1) <= 0x39 /* '9' */ ))) {
1402 <                                        mDigit(false);
1402 >                                        matchRange('0','9');
1403                                  }
1404                                  else {
1405 <                                        if ( _cnt135>=1 ) { goto _loop135; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
1405 >                                        if ( _cnt155>=1 ) { goto _loop155; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
1406                                  }
1407                                  
1408 <                                _cnt135++;
1408 >                                _cnt155++;
1409                          }
1410 <                        _loop135:;
1410 >                        _loop155:;
1411                          }  // ( ... )+
1412                          {
1413 <                        switch ( LA(1)) {
1414 <                        case 0x2e /* '.' */ :
1338 <                        {
1339 <                                match('.' /* charlit */ );
1340 <                                break;
1413 >                        if ((_tokenSet_6.member(LA(1))) && (_tokenSet_7.member(LA(2)))) {
1414 >                                mEXPONENT(false);
1415                          }
1416 <                        case 0x65 /* 'e' */ :
1343 <                        {
1344 <                                match('e' /* charlit */ );
1345 <                                break;
1416 >                        else {
1417                          }
1418 <                        case 0x45 /* 'E' */ :
1348 <                        {
1349 <                                match('E' /* charlit */ );
1350 <                                break;
1418 >                        
1419                          }
1352                        case 0x64 /* 'd' */ :
1420                          {
1421 <                                match('d' /* charlit */ );
1422 <                                break;
1421 >                        if ((_tokenSet_8.member(LA(1)))) {
1422 >                                mFLOAT_SUFFIX(true);
1423 >                                f1=_returnToken;
1424 >                                if ( inputState->guessing==0 ) {
1425 > #line 459 "MDParser.g"
1426 >                                        t=f1;
1427 > #line 1428 "MDLexer.cpp"
1428 >                                }
1429                          }
1430 <                        case 0x44 /* 'D' */ :
1358 <                        {
1359 <                                match('D' /* charlit */ );
1360 <                                break;
1430 >                        else {
1431                          }
1432 <                        default:
1363 <                        {
1364 <                                throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
1432 >                        
1433                          }
1434 +                        if ( inputState->guessing==0 ) {
1435 + #line 460 "MDParser.g"
1436 +                                
1437 +                                                                        if ( t &&
1438 +                                                                                  (t->getText().find('f') != ANTLR_USE_NAMESPACE(std)string::npos ||
1439 +                                                                                        t->getText().find('F') != ANTLR_USE_NAMESPACE(std)string::npos ) ) {
1440 +                                                                                _ttype = NUM_FLOAT;
1441 +                                                                        }
1442 +                                                                        else {
1443 +                                                                                _ttype = NUM_DOUBLE; // assume double
1444 +                                                                        }
1445 +                                                                
1446 + #line 1447 "MDLexer.cpp"
1447                          }
1367                        }
1368                        }
1448                  }
1449 <                catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& pe) {
1371 <                        synPredMatched137 = false;
1449 >                else {
1450                  }
1451 <                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++;
1451 >                
1452                  }
1453 <                _loop139:;
1454 <                }  // ( ... )+
1453 >                break;
1454 >        }
1455 >        case 0x30 /* '0' */ :
1456 >        case 0x31 /* '1' */ :
1457 >        case 0x32 /* '2' */ :
1458 >        case 0x33 /* '3' */ :
1459 >        case 0x34 /* '4' */ :
1460 >        case 0x35 /* '5' */ :
1461 >        case 0x36 /* '6' */ :
1462 >        case 0x37 /* '7' */ :
1463 >        case 0x38 /* '8' */ :
1464 >        case 0x39 /* '9' */ :
1465 >        {
1466                  {
1467                  switch ( LA(1)) {
1468 <                case 0x2e /* '.' */ :
1468 >                case 0x30 /* '0' */ :
1469                  {
1470 <                        match('.' /* charlit */ );
1471 <                        { // ( ... )*
1472 <                        for (;;) {
1473 <                                if (((LA(1) >= 0x30 /* '0' */  && LA(1) <= 0x39 /* '9' */ ))) {
1474 <                                        mDigit(false);
1470 >                        match('0' /* charlit */ );
1471 >                        if ( inputState->guessing==0 ) {
1472 > #line 472 "MDParser.g"
1473 >                                isDecimal = true;
1474 > #line 1475 "MDLexer.cpp"
1475 >                        }
1476 >                        {
1477 >                        if ((LA(1) == 0x58 /* 'X' */  || LA(1) == 0x78 /* 'x' */ )) {
1478 >                                {
1479 >                                switch ( LA(1)) {
1480 >                                case 0x78 /* 'x' */ :
1481 >                                {
1482 >                                        match('x' /* charlit */ );
1483 >                                        break;
1484                                  }
1485 <                                else {
1486 <                                        goto _loop142;
1485 >                                case 0x58 /* 'X' */ :
1486 >                                {
1487 >                                        match('X' /* charlit */ );
1488 >                                        break;
1489                                  }
1490 <                                
1490 >                                default:
1491 >                                {
1492 >                                        throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
1493 >                                }
1494 >                                }
1495 >                                }
1496 >                                { // ( ... )+
1497 >                                int _cnt162=0;
1498 >                                for (;;) {
1499 >                                        if ((_tokenSet_9.member(LA(1))) && (true) && (true)) {
1500 >                                                mHEX_DIGIT(false);
1501 >                                        }
1502 >                                        else {
1503 >                                                if ( _cnt162>=1 ) { goto _loop162; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
1504 >                                        }
1505 >                                        
1506 >                                        _cnt162++;
1507 >                                }
1508 >                                _loop162:;
1509 >                                }  // ( ... )+
1510                          }
1406                        _loop142:;
1407                        } // ( ... )*
1408                        {
1409                        if ((_tokenSet_7.member(LA(1)))) {
1410                                mExponent(false);
1411                        }
1511                          else {
1512 <                        }
1513 <                        
1512 >                                bool synPredMatched167 = false;
1513 >                                if ((((LA(1) >= 0x30 /* '0' */  && LA(1) <= 0x39 /* '9' */ )) && (true) && (true))) {
1514 >                                        int _m167 = mark();
1515 >                                        synPredMatched167 = true;
1516 >                                        inputState->guessing++;
1517 >                                        try {
1518 >                                                {
1519 >                                                { // ( ... )+
1520 >                                                int _cnt165=0;
1521 >                                                for (;;) {
1522 >                                                        if (((LA(1) >= 0x30 /* '0' */  && LA(1) <= 0x39 /* '9' */ ))) {
1523 >                                                                matchRange('0','9');
1524 >                                                        }
1525 >                                                        else {
1526 >                                                                if ( _cnt165>=1 ) { goto _loop165; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
1527 >                                                        }
1528 >                                                        
1529 >                                                        _cnt165++;
1530 >                                                }
1531 >                                                _loop165:;
1532 >                                                }  // ( ... )+
1533 >                                                {
1534 >                                                if ((_tokenSet_6.member(LA(1))) && (_tokenSet_7.member(LA(2)))) {
1535 >                                                        mEXPONENT(false);
1536 >                                                }
1537 >                                                else if ((LA(1) == 0x2e /* '.' */ )) {
1538 >                                                        match('.' /* charlit */ );
1539 >                                                }
1540 >                                                else if ((_tokenSet_8.member(LA(1))) && (true)) {
1541 >                                                        mFLOAT_SUFFIX(false);
1542 >                                                }
1543 >                                                else {
1544 >                                                        throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
1545 >                                                }
1546 >                                                
1547 >                                                }
1548 >                                                }
1549 >                                        }
1550 >                                        catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& pe) {
1551 >                                                synPredMatched167 = false;
1552 >                                        }
1553 >                                        rewind(_m167);
1554 >                                        inputState->guessing--;
1555 >                                }
1556 >                                if ( synPredMatched167 ) {
1557 >                                        { // ( ... )+
1558 >                                        int _cnt169=0;
1559 >                                        for (;;) {
1560 >                                                if (((LA(1) >= 0x30 /* '0' */  && LA(1) <= 0x39 /* '9' */ ))) {
1561 >                                                        matchRange('0','9');
1562 >                                                }
1563 >                                                else {
1564 >                                                        if ( _cnt169>=1 ) { goto _loop169; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
1565 >                                                }
1566 >                                                
1567 >                                                _cnt169++;
1568 >                                        }
1569 >                                        _loop169:;
1570 >                                        }  // ( ... )+
1571 >                                }
1572 >                                else if (((LA(1) >= 0x30 /* '0' */  && LA(1) <= 0x37 /* '7' */ )) && (true) && (true)) {
1573 >                                        { // ( ... )+
1574 >                                        int _cnt171=0;
1575 >                                        for (;;) {
1576 >                                                if (((LA(1) >= 0x30 /* '0' */  && LA(1) <= 0x37 /* '7' */ ))) {
1577 >                                                        matchRange('0','7');
1578 >                                                }
1579 >                                                else {
1580 >                                                        if ( _cnt171>=1 ) { goto _loop171; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
1581 >                                                }
1582 >                                                
1583 >                                                _cnt171++;
1584 >                                        }
1585 >                                        _loop171:;
1586 >                                        }  // ( ... )+
1587 >                                }
1588 >                                else {
1589 >                                }
1590                          }
1416                        if ( inputState->guessing==0 ) {
1417 #line 451 "MDParser.g"
1418                                _ttype = FLOATONE;
1419 #line 1420 "MDLexer.cpp"
1591                          }
1592                          break;
1593                  }
1594 <                case 0x44 /* 'D' */ :
1595 <                case 0x45 /* 'E' */ :
1596 <                case 0x64 /* 'd' */ :
1597 <                case 0x65 /* 'e' */ :
1594 >                case 0x31 /* '1' */ :
1595 >                case 0x32 /* '2' */ :
1596 >                case 0x33 /* '3' */ :
1597 >                case 0x34 /* '4' */ :
1598 >                case 0x35 /* '5' */ :
1599 >                case 0x36 /* '6' */ :
1600 >                case 0x37 /* '7' */ :
1601 >                case 0x38 /* '8' */ :
1602 >                case 0x39 /* '9' */ :
1603                  {
1604 <                        mExponent(false);
1604 >                        {
1605 >                        matchRange('1','9');
1606 >                        }
1607 >                        { // ( ... )*
1608 >                        for (;;) {
1609 >                                if (((LA(1) >= 0x30 /* '0' */  && LA(1) <= 0x39 /* '9' */ ))) {
1610 >                                        matchRange('0','9');
1611 >                                }
1612 >                                else {
1613 >                                        goto _loop174;
1614 >                                }
1615 >                                
1616 >                        }
1617 >                        _loop174:;
1618 >                        } // ( ... )*
1619                          if ( inputState->guessing==0 ) {
1620 < #line 452 "MDParser.g"
1621 <                                _ttype = FLOATTWO;
1622 < #line 1433 "MDLexer.cpp"
1620 > #line 489 "MDParser.g"
1621 >                                isDecimal=true;
1622 > #line 1623 "MDLexer.cpp"
1623                          }
1624                          break;
1625                  }
# Line 1440 | Line 1630 | void MDLexer::mNumber(bool _createToken) {
1630                  }
1631                  }
1632                  {
1633 <                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:
1633 >                if ((LA(1) == 0x4c /* 'L' */  || LA(1) == 0x6c /* 'l' */ )) {
1634                          {
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 (;;) {
1635                          switch ( LA(1)) {
1636 <                        case 0x61 /* 'a' */ :
1487 <                        case 0x62 /* 'b' */ :
1488 <                        case 0x63 /* 'c' */ :
1489 <                        case 0x64 /* 'd' */ :
1490 <                        case 0x65 /* 'e' */ :
1491 <                        case 0x66 /* 'f' */ :
1636 >                        case 0x6c /* 'l' */ :
1637                          {
1638 <                                matchRange('a','f');
1638 >                                match('l' /* charlit */ );
1639                                  break;
1640                          }
1641 <                        case 0x41 /* 'A' */ :
1497 <                        case 0x42 /* 'B' */ :
1498 <                        case 0x43 /* 'C' */ :
1499 <                        case 0x44 /* 'D' */ :
1500 <                        case 0x45 /* 'E' */ :
1501 <                        case 0x46 /* 'F' */ :
1641 >                        case 0x4c /* 'L' */ :
1642                          {
1643 <                                matchRange('A','F');
1643 >                                match('L' /* charlit */ );
1644                                  break;
1645                          }
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                        }
1646                          default:
1647                          {
1648 <                                if ( _cnt160>=1 ) { goto _loop160; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
1648 >                                throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
1649                          }
1650                          }
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;
1651                          }
1652 <                        case 0x55 /* 'U' */ :
1653 <                        case 0x75 /* 'u' */ :
1654 <                        {
1655 <                                mUnsignedSuffix(false);
1542 <                                break;
1652 >                        if ( inputState->guessing==0 ) {
1653 > #line 491 "MDParser.g"
1654 >                                _ttype = NUM_LONG;
1655 > #line 1656 "MDLexer.cpp"
1656                          }
1657 <                        default:
1657 >                }
1658 >                else if (((_tokenSet_10.member(LA(1))))&&(isDecimal)) {
1659                          {
1660 <                                goto _loop162;
1660 >                        if ((_tokenSet_6.member(LA(1))) && (_tokenSet_7.member(LA(2)))) {
1661 >                                mEXPONENT(false);
1662 >                                {
1663 >                                if ((_tokenSet_8.member(LA(1)))) {
1664 >                                        mFLOAT_SUFFIX(true);
1665 >                                        f3=_returnToken;
1666 >                                        if ( inputState->guessing==0 ) {
1667 > #line 496 "MDParser.g"
1668 >                                                t=f3;
1669 > #line 1670 "MDLexer.cpp"
1670 >                                        }
1671 >                                }
1672 >                                else {
1673 >                                }
1674 >                                
1675 >                                }
1676                          }
1677 <                        }
1678 <                }
1679 <                _loop162:;
1680 <                } // ( ... )*
1681 <                if ( inputState->guessing==0 ) {
1682 < #line 480 "MDParser.g"
1683 <                        _ttype = HEXADECIMALINT;
1684 < #line 1556 "MDLexer.cpp"
1685 <                }
1686 <        }
1687 <        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);
1677 >                        else if ((LA(1) == 0x2e /* '.' */ )) {
1678 >                                match('.' /* charlit */ );
1679 >                                { // ( ... )*
1680 >                                for (;;) {
1681 >                                        if (((LA(1) >= 0x30 /* '0' */  && LA(1) <= 0x39 /* '9' */ ))) {
1682 >                                                matchRange('0','9');
1683 >                                        }
1684 >                                        else {
1685 >                                                goto _loop179;
1686 >                                        }
1687 >                                        
1688                                  }
1689 +                                _loop179:;
1690 +                                } // ( ... )*
1691 +                                {
1692 +                                if ((_tokenSet_6.member(LA(1))) && (_tokenSet_7.member(LA(2)))) {
1693 +                                        mEXPONENT(false);
1694 +                                }
1695                                  else {
1574                                        if ( _cnt147>=1 ) { goto _loop147; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
1696                                  }
1697                                  
1698 <                                _cnt147++;
1698 >                                }
1699 >                                {
1700 >                                if ((_tokenSet_8.member(LA(1)))) {
1701 >                                        mFLOAT_SUFFIX(true);
1702 >                                        f2=_returnToken;
1703 >                                        if ( inputState->guessing==0 ) {
1704 > #line 495 "MDParser.g"
1705 >                                                t=f2;
1706 > #line 1707 "MDLexer.cpp"
1707 >                                        }
1708 >                                }
1709 >                                else {
1710 >                                }
1711 >                                
1712 >                                }
1713                          }
1714 <                        _loop147:;
1715 <                        }  // ( ... )+
1716 <                        {
1717 <                        if ((_tokenSet_7.member(LA(1)))) {
1718 <                                mExponent(false);
1714 >                        else if ((_tokenSet_8.member(LA(1))) && (true)) {
1715 >                                mFLOAT_SUFFIX(true);
1716 >                                f4=_returnToken;
1717 >                                if ( inputState->guessing==0 ) {
1718 > #line 497 "MDParser.g"
1719 >                                        t=f4;
1720 > #line 1721 "MDLexer.cpp"
1721 >                                }
1722                          }
1723                          else {
1724 +                                throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
1725                          }
1726                          
1727                          }
1728                          if ( inputState->guessing==0 ) {
1729 < #line 459 "MDParser.g"
1730 <                                _ttype = FLOATONE;
1731 < #line 1593 "MDLexer.cpp"
1729 > #line 499 "MDParser.g"
1730 >                                
1731 >                                                                        if ( t &&
1732 >                                                                                  (t->getText().find('f') != ANTLR_USE_NAMESPACE(std)string::npos ||
1733 >                                                                                        t->getText().find('F') != ANTLR_USE_NAMESPACE(std)string::npos ) ) {
1734 >                                                                                _ttype = NUM_FLOAT;
1735 >                                                                        }
1736 >                                                                        else {
1737 >                                                                                _ttype = NUM_DOUBLE; // assume double
1738 >                                                                        }
1739 >                                                                
1740 > #line 1741 "MDLexer.cpp"
1741                          }
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                        }
1742                  }
1743                  else {
1744                  }
1745                  
1746                  }
1747 +                break;
1748          }
1749 <        else if ((LA(1) == 0x30 /* '0' */ ) && (true) && (true)) {
1750 <                match('0' /* charlit */ );
1751 <                { // ( ... )*
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 <                }
1749 >        default:
1750 >        {
1751 >                throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
1752          }
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                }
1753          }
1705        else {
1706                throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
1754          }
1708        
1755          if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
1756             _token = makeToken(_ttype);
1757             _token->setText(text.substr(_begin, text.length()-_begin));
# Line 1714 | Line 1760 | void MDLexer::mNumber(bool _createToken) {
1760          _saveIndex=0;
1761   }
1762  
1763 < void MDLexer::mID(bool _createToken) {
1763 > void MDLexer::mEXPONENT(bool _createToken) {
1764          int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
1765 <        _ttype = ID;
1765 >        _ttype = EXPONENT;
1766          ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
1767          
1768          {
1769          switch ( LA(1)) {
1724        case 0x61 /* 'a' */ :
1725        case 0x62 /* 'b' */ :
1726        case 0x63 /* 'c' */ :
1727        case 0x64 /* 'd' */ :
1770          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' */ :
1771          {
1772 <                matchRange('a','z');
1772 >                match('e' /* charlit */ );
1773                  break;
1774          }
1754        case 0x41 /* 'A' */ :
1755        case 0x42 /* 'B' */ :
1756        case 0x43 /* 'C' */ :
1757        case 0x44 /* 'D' */ :
1775          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' */ :
1776          {
1777 <                matchRange('A','Z');
1777 >                match('E' /* charlit */ );
1778                  break;
1779          }
1780 <        case 0x5f /* '_' */ :
1780 >        case 0x64 /* 'd' */ :
1781          {
1782 <                match('_' /* charlit */ );
1782 >                match('d' /* charlit */ );
1783                  break;
1784          }
1785 +        case 0x44 /* 'D' */ :
1786 +        {
1787 +                match('D' /* charlit */ );
1788 +                break;
1789 +        }
1790          default:
1791          {
1792                  throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
1793          }
1794          }
1795          }
1796 <        { // ( ... )*
1796 >        {
1797 >        switch ( LA(1)) {
1798 >        case 0x2b /* '+' */ :
1799 >        {
1800 >                match('+' /* charlit */ );
1801 >                break;
1802 >        }
1803 >        case 0x2d /* '-' */ :
1804 >        {
1805 >                match('-' /* charlit */ );
1806 >                break;
1807 >        }
1808 >        case 0x30 /* '0' */ :
1809 >        case 0x31 /* '1' */ :
1810 >        case 0x32 /* '2' */ :
1811 >        case 0x33 /* '3' */ :
1812 >        case 0x34 /* '4' */ :
1813 >        case 0x35 /* '5' */ :
1814 >        case 0x36 /* '6' */ :
1815 >        case 0x37 /* '7' */ :
1816 >        case 0x38 /* '8' */ :
1817 >        case 0x39 /* '9' */ :
1818 >        {
1819 >                break;
1820 >        }
1821 >        default:
1822 >        {
1823 >                throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
1824 >        }
1825 >        }
1826 >        }
1827 >        { // ( ... )+
1828 >        int _cnt187=0;
1829          for (;;) {
1830 <                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 <                {
1830 >                if (((LA(1) >= 0x30 /* '0' */  && LA(1) <= 0x39 /* '9' */ ))) {
1831                          matchRange('0','9');
1875                        break;
1832                  }
1833 <                default:
1834 <                {
1879 <                        goto _loop166;
1833 >                else {
1834 >                        if ( _cnt187>=1 ) { goto _loop187; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
1835                  }
1836 <                }
1836 >                
1837 >                _cnt187++;
1838          }
1839 <        _loop166:;
1840 <        } // ( ... )*
1885 <        _ttype = testLiteralsTable(_ttype);
1839 >        _loop187:;
1840 >        }  // ( ... )+
1841          if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
1842             _token = makeToken(_ttype);
1843             _token->setText(text.substr(_begin, text.length()-_begin));
# Line 1891 | Line 1846 | void MDLexer::mID(bool _createToken) {
1846          _saveIndex=0;
1847   }
1848  
1849 + void MDLexer::mFLOAT_SUFFIX(bool _createToken) {
1850 +        int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length();
1851 +        _ttype = FLOAT_SUFFIX;
1852 +        ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
1853 +        
1854 +        switch ( LA(1)) {
1855 +        case 0x66 /* 'f' */ :
1856 +        {
1857 +                match('f' /* charlit */ );
1858 +                break;
1859 +        }
1860 +        case 0x46 /* 'F' */ :
1861 +        {
1862 +                match('F' /* charlit */ );
1863 +                break;
1864 +        }
1865 +        case 0x64 /* 'd' */ :
1866 +        {
1867 +                match('d' /* charlit */ );
1868 +                break;
1869 +        }
1870 +        case 0x44 /* 'D' */ :
1871 +        {
1872 +                match('D' /* charlit */ );
1873 +                break;
1874 +        }
1875 +        default:
1876 +        {
1877 +                throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());
1878 +        }
1879 +        }
1880 +        if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
1881 +           _token = makeToken(_ttype);
1882 +           _token->setText(text.substr(_begin, text.length()-_begin));
1883 +        }
1884 +        _returnToken = _token;
1885 +        _saveIndex=0;
1886 + }
1887  
1888 +
1889   const unsigned long MDLexer::_tokenSet_0_data_[] = { 4294958079UL, 4294966271UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
1890   // 0x0 0x1 0x2 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0xb 0xc 0xe 0xf 0x10 0x11 0x12
1891   // 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f   !
1892 < // \" # $ % & \' ( ) + , - . / 0 1 2 3 4 5 6 7
1892 > // \" # $ % & \' ( ) + , - . / 0 1 2 3 4 5 6 7 8 9 : ;
1893   const ANTLR_USE_NAMESPACE(antlr)BitSet MDLexer::_tokenSet_0(_tokenSet_0_data_,16);
1894   const unsigned long MDLexer::_tokenSet_1_data_[] = { 4294958079UL, 4294967295UL, 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 6 7
1897 > // \" # $ % & \' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ;
1898   const ANTLR_USE_NAMESPACE(antlr)BitSet MDLexer::_tokenSet_1(_tokenSet_1_data_,16);
1899   const unsigned long MDLexer::_tokenSet_2_data_[] = { 0UL, 2164195460UL, 268435456UL, 22298694UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
1900   // \" \' 0 1 2 3 4 5 6 7
# Line 1908 | Line 1902 | const unsigned long MDLexer::_tokenSet_3_data_[] = { 4
1902   const unsigned long MDLexer::_tokenSet_3_data_[] = { 4294958079UL, 4294967291UL, 4026531839UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
1903   // 0x0 0x1 0x2 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0xb 0xc 0xe 0xf 0x10 0x11 0x12
1904   // 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f   !
1905 < // # $ % & \' ( ) * + , - . / 0 1 2 3 4 5 6 7
1905 > // # $ % & \' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ;
1906   const ANTLR_USE_NAMESPACE(antlr)BitSet MDLexer::_tokenSet_3(_tokenSet_3_data_,16);
1907   const unsigned long MDLexer::_tokenSet_4_data_[] = { 0UL, 67043456UL, 126UL, 126UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
1908 < // \' 0 1 2 3 4 5 6 7
1908 > // \' 0 1 2 3 4 5 6 7 8 9
1909   const ANTLR_USE_NAMESPACE(antlr)BitSet MDLexer::_tokenSet_4(_tokenSet_4_data_,10);
1910   const unsigned long MDLexer::_tokenSet_5_data_[] = { 4294967295UL, 4294967167UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
1911   // 0x0 0x1 0x2 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0xa 0xb 0xc 0xd 0xe 0xf 0x10
1912   // 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e
1913 < // 0x1f   ! \" # $ % & ( ) * + , - . / 0 1 2 3 4 5 6 7
1913 > // 0x1f   ! \" # $ % & ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ;
1914   const ANTLR_USE_NAMESPACE(antlr)BitSet MDLexer::_tokenSet_5(_tokenSet_5_data_,16);
1915 < 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
1915 > const unsigned long MDLexer::_tokenSet_6_data_[] = { 0UL, 0UL, 48UL, 48UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
1916   const ANTLR_USE_NAMESPACE(antlr)BitSet MDLexer::_tokenSet_6(_tokenSet_6_data_,10);
1917 < const unsigned long MDLexer::_tokenSet_7_data_[] = { 0UL, 0UL, 48UL, 48UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
1917 > const unsigned long MDLexer::_tokenSet_7_data_[] = { 0UL, 67053568UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
1918 > // + - 0 1 2 3 4 5 6 7 8 9
1919   const ANTLR_USE_NAMESPACE(antlr)BitSet MDLexer::_tokenSet_7(_tokenSet_7_data_,10);
1920 + const unsigned long MDLexer::_tokenSet_8_data_[] = { 0UL, 0UL, 80UL, 80UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
1921 + const ANTLR_USE_NAMESPACE(antlr)BitSet MDLexer::_tokenSet_8(_tokenSet_8_data_,10);
1922 + const unsigned long MDLexer::_tokenSet_9_data_[] = { 0UL, 67043328UL, 126UL, 126UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
1923 + // 0 1 2 3 4 5 6 7 8 9
1924 + const ANTLR_USE_NAMESPACE(antlr)BitSet MDLexer::_tokenSet_9(_tokenSet_9_data_,10);
1925 + const unsigned long MDLexer::_tokenSet_10_data_[] = { 0UL, 16384UL, 112UL, 112UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
1926 + // .
1927 + const ANTLR_USE_NAMESPACE(antlr)BitSet MDLexer::_tokenSet_10(_tokenSet_10_data_,10);
1928  

Comparing trunk/src/mdParser/MDLexer.cpp (property svn:keywords):
Revision 770 by tim, Fri Dec 2 15:38:03 2005 UTC vs.
Revision 2040 by gezelter, Thu Nov 13 17:49:44 2014 UTC

# Line 0 | Line 1
1 + Author Id Revision Date

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines