Changeset 60703 in webkit
- Timestamp:
- Jun 4, 2010 1:00:40 PM (14 years ago)
- Location:
- trunk/WebCore
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r60702 r60703 1 2010-06-04 Adam Barth <abarth@webkit.org> 2 3 Reviewed by Eric Seidel. 4 5 Make HTML5Lexer go fast 6 https://bugs.webkit.org/show_bug.cgi?id=40048 7 8 Introduce ADVANCE_TO macro. This is the last macro we need to 9 introduce. 10 11 * html/HTML5Lexer.cpp: 12 (WebCore::HTML5Lexer::nextToken): 13 1 14 2010-06-04 Adam Barth <abarth@webkit.org> 2 15 -
trunk/WebCore/html/HTML5Lexer.cpp
r60702 r60703 328 328 } while (false) 329 329 330 #define ADVANCE_TO(stateName) \ 331 m_state = stateName \ 332 330 333 // We'd like to use the standard do { } while (false) pattern here, but it 331 334 // doesn't play nicely with continue. … … 376 379 BEGIN_STATE(DataState) { 377 380 if (cc == '&') 378 m_state = CharacterReferenceInDataState;381 ADVANCE_TO(CharacterReferenceInDataState); 379 382 else if (cc == '<') { 380 383 if (m_token->type() == HTML5Token::Character) { … … 383 386 return true; 384 387 } 385 m_state = TagOpenState;388 ADVANCE_TO(TagOpenState); 386 389 } else 387 390 emitCharacter(cc); … … 399 402 BEGIN_STATE(RCDATAState) { 400 403 if (cc == '&') 401 m_state = CharacterReferenceInRCDATAState;404 ADVANCE_TO(CharacterReferenceInRCDATAState); 402 405 else if (cc == '<') 403 m_state = RCDATALessThanSignState;406 ADVANCE_TO(RCDATALessThanSignState); 404 407 else 405 408 emitCharacter(cc); … … 417 420 BEGIN_STATE(RAWTEXTState) { 418 421 if (cc == '<') 419 m_state = RAWTEXTLessThanSignState;422 ADVANCE_TO(RAWTEXTLessThanSignState); 420 423 else 421 424 emitCharacter(cc); … … 426 429 BEGIN_STATE(ScriptDataState) { 427 430 if (cc == '<') 428 m_state = ScriptDataLessThanSignState;431 ADVANCE_TO(ScriptDataLessThanSignState); 429 432 else 430 433 emitCharacter(cc); … … 441 444 BEGIN_STATE(TagOpenState) { 442 445 if (cc == '!') 443 m_state = MarkupDeclarationOpenState;446 ADVANCE_TO(MarkupDeclarationOpenState); 444 447 else if (cc == '/') 445 m_state = EndTagOpenState;448 ADVANCE_TO(EndTagOpenState); 446 449 else if (cc >= 'A' && cc <= 'Z') { 447 450 m_token->beginStartTag(toLowerCase(cc)); 448 m_state = TagNameState;451 ADVANCE_TO(TagNameState); 449 452 } else if (cc >= 'a' && cc <= 'z') { 450 453 m_token->beginStartTag(cc); 451 m_state = TagNameState;454 ADVANCE_TO(TagNameState); 452 455 } else if (cc == '?') { 453 456 emitParseError(); … … 468 471 if (cc >= 'A' && cc <= 'Z') { 469 472 m_token->beginEndTag(toLowerCase(cc)); 470 m_state = TagNameState;473 ADVANCE_TO(TagNameState); 471 474 } else if (cc >= 'a' && cc <= 'z') { 472 475 m_token->beginEndTag(cc); 473 m_state = TagNameState;476 ADVANCE_TO(TagNameState); 474 477 } else if (cc == '>') { 475 478 emitParseError(); 476 m_state = DataState;479 ADVANCE_TO(DataState); 477 480 } else { 478 481 emitParseError(); … … 486 489 BEGIN_STATE(TagNameState) { 487 490 if (cc == '\x09' || cc == '\x0A' || cc == '\x0C' || cc == ' ') 488 m_state = BeforeAttributeNameState;491 ADVANCE_TO(BeforeAttributeNameState); 489 492 else if (cc == '/') 490 m_state = SelfClosingStartTagState;493 ADVANCE_TO(SelfClosingStartTagState); 491 494 else if (cc == '>') { 492 495 EMIT_AND_RESUME_IN(DataState); … … 504 507 m_temporaryBuffer.clear(); 505 508 ASSERT(m_bufferedEndTagName.isEmpty()); 506 m_state = RCDATAEndTagOpenState;509 ADVANCE_TO(RCDATAEndTagOpenState); 507 510 } else { 508 511 emitCharacter('<'); … … 517 520 m_temporaryBuffer.append(cc); 518 521 addToPossibleEndTag(toLowerCase(cc)); 519 m_state = RCDATAEndTagNameState;522 ADVANCE_TO(RCDATAEndTagNameState); 520 523 } else if (cc >= 'a' && cc <= 'z') { 521 524 m_temporaryBuffer.append(cc); 522 525 addToPossibleEndTag(cc); 523 m_state = RCDATAEndTagNameState;526 ADVANCE_TO(RCDATAEndTagNameState); 524 527 } else { 525 528 emitCharacter('<'); … … 566 569 m_temporaryBuffer.clear(); 567 570 ASSERT(m_bufferedEndTagName.isEmpty()); 568 m_state = RAWTEXTEndTagOpenState;571 ADVANCE_TO(RAWTEXTEndTagOpenState); 569 572 } else { 570 573 emitCharacter('<'); … … 579 582 m_temporaryBuffer.append(cc); 580 583 addToPossibleEndTag(toLowerCase(cc)); 581 m_state = RAWTEXTEndTagNameState;584 ADVANCE_TO(RAWTEXTEndTagNameState); 582 585 } else if (cc >= 'a' && cc <= 'z') { 583 586 m_temporaryBuffer.append(cc); 584 587 addToPossibleEndTag(cc); 585 m_state = RAWTEXTEndTagNameState;588 ADVANCE_TO(RAWTEXTEndTagNameState); 586 589 } else { 587 590 emitCharacter('<'); … … 628 631 m_temporaryBuffer.clear(); 629 632 ASSERT(m_bufferedEndTagName.isEmpty()); 630 m_state = ScriptDataEndTagOpenState;633 ADVANCE_TO(ScriptDataEndTagOpenState); 631 634 } else if (cc == '!') { 632 635 emitCharacter('<'); 633 636 emitCharacter('!'); 634 m_state = ScriptDataEscapeStartState;637 ADVANCE_TO(ScriptDataEscapeStartState); 635 638 } else { 636 639 emitCharacter('<'); … … 645 648 m_temporaryBuffer.append(cc); 646 649 addToPossibleEndTag(toLowerCase(cc)); 647 m_state = ScriptDataEndTagNameState;650 ADVANCE_TO(ScriptDataEndTagNameState); 648 651 } else if (cc >= 'a' && cc <= 'z') { 649 652 m_temporaryBuffer.append(cc); 650 653 addToPossibleEndTag(cc); 651 m_state = ScriptDataEndTagNameState;654 ADVANCE_TO(ScriptDataEndTagNameState); 652 655 } else { 653 656 emitCharacter('<'); … … 693 696 if (cc == '-') { 694 697 emitCharacter(cc); 695 m_state = ScriptDataEscapeStartDashState;698 ADVANCE_TO(ScriptDataEscapeStartDashState); 696 699 } else { 697 700 RECONSUME_IN(ScriptDataState); … … 704 707 if (cc == '-') { 705 708 emitCharacter(cc); 706 m_state = ScriptDataEscapedDashDashState;709 ADVANCE_TO(ScriptDataEscapedDashDashState); 707 710 } else { 708 711 RECONSUME_IN(ScriptDataState); … … 715 718 if (cc == '-') { 716 719 emitCharacter(cc); 717 m_state = ScriptDataEscapedDashState;720 ADVANCE_TO(ScriptDataEscapedDashState); 718 721 } else if (cc == '<') 719 m_state = ScriptDataEscapedLessThanSignState;722 ADVANCE_TO(ScriptDataEscapedLessThanSignState); 720 723 else 721 724 emitCharacter(cc); … … 728 731 if (cc == '-') { 729 732 emitCharacter(cc); 730 m_state = ScriptDataEscapedDashDashState;733 ADVANCE_TO(ScriptDataEscapedDashDashState); 731 734 } else if (cc == '<') 732 m_state = ScriptDataEscapedLessThanSignState;735 ADVANCE_TO(ScriptDataEscapedLessThanSignState); 733 736 else { 734 737 emitCharacter(cc); 735 m_state = ScriptDataEscapedState;738 ADVANCE_TO(ScriptDataEscapedState); 736 739 } 737 740 // FIXME: Handle EOF properly. … … 744 747 emitCharacter(cc); 745 748 else if (cc == '<') 746 m_state = ScriptDataEscapedLessThanSignState;749 ADVANCE_TO(ScriptDataEscapedLessThanSignState); 747 750 else if (cc == '>') { 748 751 emitCharacter(cc); 749 m_state = ScriptDataState;750 } else { 751 emitCharacter(cc); 752 m_state = ScriptDataEscapedState;752 ADVANCE_TO(ScriptDataState); 753 } else { 754 emitCharacter(cc); 755 ADVANCE_TO(ScriptDataEscapedState); 753 756 } 754 757 // FIXME: Handle EOF properly. … … 761 764 m_temporaryBuffer.clear(); 762 765 ASSERT(m_bufferedEndTagName.isEmpty()); 763 m_state = ScriptDataEscapedEndTagOpenState;766 ADVANCE_TO(ScriptDataEscapedEndTagOpenState); 764 767 } else if (cc >= 'A' && cc <= 'Z') { 765 768 emitCharacter('<'); … … 767 770 m_temporaryBuffer.clear(); 768 771 m_temporaryBuffer.append(toLowerCase(cc)); 769 m_state = ScriptDataDoubleEscapeStartState;772 ADVANCE_TO(ScriptDataDoubleEscapeStartState); 770 773 } else if (cc >= 'a' && cc <= 'z') { 771 774 emitCharacter('<'); … … 773 776 m_temporaryBuffer.clear(); 774 777 m_temporaryBuffer.append(cc); 775 m_state = ScriptDataDoubleEscapeStartState;778 ADVANCE_TO(ScriptDataDoubleEscapeStartState); 776 779 } else { 777 780 emitCharacter('<'); … … 786 789 m_temporaryBuffer.append(cc); 787 790 addToPossibleEndTag(toLowerCase(cc)); 788 m_state = ScriptDataEscapedEndTagNameState;791 ADVANCE_TO(ScriptDataEscapedEndTagNameState); 789 792 } else if (cc >= 'a' && cc <= 'z') { 790 793 m_temporaryBuffer.append(cc); 791 794 addToPossibleEndTag(cc); 792 m_state = ScriptDataEscapedEndTagNameState;795 ADVANCE_TO(ScriptDataEscapedEndTagNameState); 793 796 } else { 794 797 emitCharacter('<'); … … 835 838 emitCharacter(cc); 836 839 if (temporaryBufferIs(scriptTag.localName())) 837 m_state = ScriptDataDoubleEscapedState;840 ADVANCE_TO(ScriptDataDoubleEscapedState); 838 841 else 839 m_state = ScriptDataEscapedState;842 ADVANCE_TO(ScriptDataEscapedState); 840 843 } else if (cc >= 'A' && cc <= 'Z') { 841 844 emitCharacter(cc); … … 854 857 if (cc == '-') { 855 858 emitCharacter(cc); 856 m_state = ScriptDataDoubleEscapedDashState;859 ADVANCE_TO(ScriptDataDoubleEscapedDashState); 857 860 } else if (cc == '<') { 858 861 emitCharacter(cc); 859 m_state = ScriptDataDoubleEscapedLessThanSignState;862 ADVANCE_TO(ScriptDataDoubleEscapedLessThanSignState); 860 863 } else 861 864 emitCharacter(cc); … … 868 871 if (cc == '-') { 869 872 emitCharacter(cc); 870 m_state = ScriptDataDoubleEscapedDashDashState;873 ADVANCE_TO(ScriptDataDoubleEscapedDashDashState); 871 874 } else if (cc == '<') { 872 875 emitCharacter(cc); 873 m_state = ScriptDataDoubleEscapedLessThanSignState;874 } else { 875 emitCharacter(cc); 876 m_state = ScriptDataDoubleEscapedState;876 ADVANCE_TO(ScriptDataDoubleEscapedLessThanSignState); 877 } else { 878 emitCharacter(cc); 879 ADVANCE_TO(ScriptDataDoubleEscapedState); 877 880 } 878 881 // FIXME: Handle EOF properly. … … 886 889 else if (cc == '<') { 887 890 emitCharacter(cc); 888 m_state = ScriptDataDoubleEscapedLessThanSignState;891 ADVANCE_TO(ScriptDataDoubleEscapedLessThanSignState); 889 892 } else if (cc == '>') { 890 893 emitCharacter(cc); 891 m_state = ScriptDataState;892 } else { 893 emitCharacter(cc); 894 m_state = ScriptDataDoubleEscapedState;894 ADVANCE_TO(ScriptDataState); 895 } else { 896 emitCharacter(cc); 897 ADVANCE_TO(ScriptDataDoubleEscapedState); 895 898 } 896 899 // FIXME: Handle EOF properly. … … 903 906 emitCharacter(cc); 904 907 m_temporaryBuffer.clear(); 905 m_state = ScriptDataDoubleEscapeEndState;908 ADVANCE_TO(ScriptDataDoubleEscapeEndState); 906 909 } else { 907 910 RECONSUME_IN(ScriptDataDoubleEscapedState); … … 915 918 emitCharacter(cc); 916 919 if (temporaryBufferIs(scriptTag.localName())) 917 m_state = ScriptDataEscapedState;920 ADVANCE_TO(ScriptDataEscapedState); 918 921 else 919 m_state = ScriptDataDoubleEscapedState;922 ADVANCE_TO(ScriptDataDoubleEscapedState); 920 923 } else if (cc >= 'A' && cc <= 'Z') { 921 924 emitCharacter(cc); … … 935 938 break; 936 939 else if (cc == '/') 937 m_state = SelfClosingStartTagState;940 ADVANCE_TO(SelfClosingStartTagState); 938 941 else if (cc == '>') { 939 942 EMIT_AND_RESUME_IN(DataState); … … 941 944 m_token->addNewAttribute(); 942 945 m_token->appendToAttributeName(toLowerCase(cc)); 943 m_state = AttributeNameState;946 ADVANCE_TO(AttributeNameState); 944 947 } else { 945 948 if (cc == '"' || cc == '\'' || cc == '<' || cc == '=') … … 947 950 m_token->addNewAttribute(); 948 951 m_token->appendToAttributeName(cc); 949 m_state = AttributeNameState;952 ADVANCE_TO(AttributeNameState); 950 953 } 951 954 // FIXME: Handle EOF properly. … … 956 959 BEGIN_STATE(AttributeNameState) { 957 960 if (cc == '\x09' || cc == '\x0A' || cc == '\x0C' || cc == ' ') 958 m_state = AfterAttributeNameState;961 ADVANCE_TO(AfterAttributeNameState); 959 962 else if (cc == '/') 960 m_state = SelfClosingStartTagState;963 ADVANCE_TO(SelfClosingStartTagState); 961 964 else if (cc == '=') 962 m_state = BeforeAttributeValueState;965 ADVANCE_TO(BeforeAttributeValueState); 963 966 else if (cc == '>') { 964 967 EMIT_AND_RESUME_IN(DataState); … … 969 972 emitParseError(); 970 973 m_token->appendToAttributeName(cc); 971 m_state = AttributeNameState;974 ADVANCE_TO(AttributeNameState); 972 975 } 973 976 // FIXME: Handle EOF properly. … … 980 983 break; 981 984 else if (cc == '/') 982 m_state = SelfClosingStartTagState;985 ADVANCE_TO(SelfClosingStartTagState); 983 986 else if (cc == '=') 984 m_state = BeforeAttributeValueState;987 ADVANCE_TO(BeforeAttributeValueState); 985 988 else if (cc == '=') { 986 989 EMIT_AND_RESUME_IN(DataState); … … 988 991 m_token->addNewAttribute(); 989 992 m_token->appendToAttributeName(toLowerCase(cc)); 990 m_state = AttributeNameState;993 ADVANCE_TO(AttributeNameState); 991 994 } else { 992 995 if (cc == '"' || cc == '\'' || cc == '<') … … 994 997 m_token->addNewAttribute(); 995 998 m_token->appendToAttributeName(cc); 996 m_state = AttributeNameState;999 ADVANCE_TO(AttributeNameState); 997 1000 } 998 1001 // FIXME: Handle EOF properly. … … 1005 1008 break; 1006 1009 else if (cc == '"') 1007 m_state = AttributeValueDoubleQuotedState;1010 ADVANCE_TO(AttributeValueDoubleQuotedState); 1008 1011 else if (cc == '&') { 1009 1012 RECONSUME_IN(AttributeValueUnquotedState); 1010 1013 } else if (cc == '\'') 1011 m_state = AttributeValueSingleQuotedState;1014 ADVANCE_TO(AttributeValueSingleQuotedState); 1012 1015 else if (cc == '>') { 1013 1016 emitParseError(); … … 1017 1020 emitParseError(); 1018 1021 m_token->appendToAttributeValue(cc); 1019 m_state = AttributeValueUnquotedState;1022 ADVANCE_TO(AttributeValueUnquotedState); 1020 1023 } 1021 1024 break; … … 1025 1028 BEGIN_STATE(AttributeValueDoubleQuotedState) { 1026 1029 if (cc == '"') 1027 m_state = AfterAttributeValueQuotedState;1030 ADVANCE_TO(AfterAttributeValueQuotedState); 1028 1031 else if (cc == '&') { 1029 1032 m_additionalAllowedCharacter = '"'; 1030 m_state = CharacterReferenceInAttributeValueState;1033 ADVANCE_TO(CharacterReferenceInAttributeValueState); 1031 1034 } else 1032 1035 m_token->appendToAttributeValue(cc); … … 1038 1041 BEGIN_STATE(AttributeValueSingleQuotedState) { 1039 1042 if (cc == '\'') 1040 m_state = AfterAttributeValueQuotedState;1043 ADVANCE_TO(AfterAttributeValueQuotedState); 1041 1044 else if (cc == '&') { 1042 1045 m_additionalAllowedCharacter = '\''; 1043 m_state = CharacterReferenceInAttributeValueState;1046 ADVANCE_TO(CharacterReferenceInAttributeValueState); 1044 1047 } else 1045 1048 m_token->appendToAttributeValue(cc); … … 1051 1054 BEGIN_STATE(AttributeValueUnquotedState) { 1052 1055 if (cc == '\x09' || cc == '\x0A' || cc == '\x0C' || cc == ' ') 1053 m_state = BeforeAttributeNameState;1056 ADVANCE_TO(BeforeAttributeNameState); 1054 1057 else if (cc == '&') { 1055 1058 m_additionalAllowedCharacter = '>'; 1056 m_state = CharacterReferenceInAttributeValueState;1059 ADVANCE_TO(CharacterReferenceInAttributeValueState); 1057 1060 } else if (cc == '>') { 1058 1061 EMIT_AND_RESUME_IN(DataState); … … 1098 1101 BEGIN_STATE(AfterAttributeValueQuotedState) { 1099 1102 if (cc == '\x09' || cc == '\x0A' || cc == '\x0C' || cc == ' ') 1100 m_state = BeforeAttributeNameState;1103 ADVANCE_TO(BeforeAttributeNameState); 1101 1104 else if (cc == '/') 1102 m_state = SelfClosingStartTagState;1105 ADVANCE_TO(SelfClosingStartTagState); 1103 1106 else if (cc == '>') { 1104 1107 EMIT_AND_RESUME_IN(DataState); … … 1172 1175 BEGIN_STATE(CommentStartState) { 1173 1176 if (cc == '-') 1174 m_state = CommentStartDashState;1177 ADVANCE_TO(CommentStartDashState); 1175 1178 else if (cc == '>') { 1176 1179 emitParseError(); … … 1178 1181 } else { 1179 1182 m_token->appendToComment(cc); 1180 m_state = CommentState;1183 ADVANCE_TO(CommentState); 1181 1184 } 1182 1185 // FIXME: Handle EOF properly. … … 1187 1190 BEGIN_STATE(CommentStartDashState) { 1188 1191 if (cc == '-') 1189 m_state = CommentEndState;1192 ADVANCE_TO(CommentEndState); 1190 1193 else if (cc == '>') { 1191 1194 emitParseError(); … … 1194 1197 m_token->appendToComment('-'); 1195 1198 m_token->appendToComment(cc); 1196 m_state = CommentState;1199 ADVANCE_TO(CommentState); 1197 1200 } 1198 1201 // FIXME: Handle EOF properly. … … 1203 1206 BEGIN_STATE(CommentState) { 1204 1207 if (cc == '-') 1205 m_state = CommentEndDashState;1208 ADVANCE_TO(CommentEndDashState); 1206 1209 else 1207 1210 m_token->appendToComment(cc); … … 1213 1216 BEGIN_STATE(CommentEndDashState) { 1214 1217 if (cc == '-') 1215 m_state = CommentEndState;1218 ADVANCE_TO(CommentEndState); 1216 1219 else { 1217 1220 m_token->appendToComment('-'); 1218 1221 m_token->appendToComment(cc); 1219 m_state = CommentState;1222 ADVANCE_TO(CommentState); 1220 1223 } 1221 1224 // FIXME: Handle EOF properly. … … 1232 1235 m_token->appendToComment('-'); 1233 1236 m_token->appendToComment(cc); 1234 m_state = CommentEndSpaceState;1237 ADVANCE_TO(CommentEndSpaceState); 1235 1238 } else if (cc == '!') { 1236 1239 emitParseError(); 1237 m_state = CommentEndBangState;1240 ADVANCE_TO(CommentEndBangState); 1238 1241 } else if (cc == '-') { 1239 1242 emitParseError(); … … 1245 1248 m_token->appendToComment('-'); 1246 1249 m_token->appendToComment(cc); 1247 m_state = CommentState;1250 ADVANCE_TO(CommentState); 1248 1251 } 1249 1252 // FIXME: Handle EOF properly. … … 1257 1260 m_token->appendToComment('-'); 1258 1261 m_token->appendToComment('!'); 1259 m_state = CommentEndDashState;1262 ADVANCE_TO(CommentEndDashState); 1260 1263 } else if (cc == '>') { 1261 1264 EMIT_AND_RESUME_IN(DataState); … … 1265 1268 m_token->appendToComment('!'); 1266 1269 m_token->appendToComment(cc); 1267 m_state = CommentState;1270 ADVANCE_TO(CommentState); 1268 1271 } 1269 1272 // FIXME: Handle EOF properly. … … 1276 1279 m_token->appendToComment(cc); 1277 1280 else if (cc == '-') 1278 m_state = CommentEndDashState;1281 ADVANCE_TO(CommentEndDashState); 1279 1282 else if (cc == '>') { 1280 1283 EMIT_AND_RESUME_IN(DataState); 1281 1284 } else { 1282 1285 m_token->appendToComment(cc); 1283 m_state = CommentState;1286 ADVANCE_TO(CommentState); 1284 1287 } 1285 1288 // FIXME: Handle EOF properly. … … 1290 1293 BEGIN_STATE(DOCTYPEState) { 1291 1294 if (cc == '\x09' || cc == '\x0A' || cc == '\x0C' || cc == ' ') 1292 m_state = BeforeDOCTYPENameState;1295 ADVANCE_TO(BeforeDOCTYPENameState); 1293 1296 else { 1294 1297 emitParseError(); … … 1305 1308 else if (cc >= 'A' && cc <= 'Z') { 1306 1309 m_token->beginDOCTYPE(toLowerCase(cc)); 1307 m_state = DOCTYPENameState;1310 ADVANCE_TO(DOCTYPENameState); 1308 1311 } else if (cc == '>') { 1309 1312 emitParseError(); … … 1313 1316 } else { 1314 1317 m_token->beginDOCTYPE(cc); 1315 m_state = DOCTYPENameState;1318 ADVANCE_TO(DOCTYPENameState); 1316 1319 } 1317 1320 // FIXME: Handle EOF properly. … … 1322 1325 BEGIN_STATE(DOCTYPENameState) { 1323 1326 if (cc == '\x09' || cc == '\x0A' || cc == '\x0C' || cc == ' ') 1324 m_state = AfterDOCTYPENameState;1327 ADVANCE_TO(AfterDOCTYPENameState); 1325 1328 else if (cc == '>') { 1326 1329 EMIT_AND_RESUME_IN(DataState); … … 1359 1362 emitParseError(); 1360 1363 notImplemented(); 1361 m_state = BogusDOCTYPEState;1364 ADVANCE_TO(BogusDOCTYPEState); 1362 1365 } 1363 1366 // FIXME: Handle EOF properly. … … 1368 1371 BEGIN_STATE(AfterDOCTYPEPublicKeywordState) { 1369 1372 if (cc == '\x09' || cc == '\x0A' || cc == '\x0C' || cc == ' ') 1370 m_state = BeforeDOCTYPEPublicIdentifierState;1373 ADVANCE_TO(BeforeDOCTYPEPublicIdentifierState); 1371 1374 else if (cc == '"') { 1372 1375 emitParseError(); 1373 1376 m_token->setPublicIdentifierToEmptyString(); 1374 m_state = DOCTYPEPublicIdentifierDoubleQuotedState;1377 ADVANCE_TO(DOCTYPEPublicIdentifierDoubleQuotedState); 1375 1378 } else if (cc == '\'') { 1376 1379 emitParseError(); 1377 1380 m_token->setPublicIdentifierToEmptyString(); 1378 m_state = DOCTYPEPublicIdentifierSingleQuotedState;1381 ADVANCE_TO(DOCTYPEPublicIdentifierSingleQuotedState); 1379 1382 } else if (cc == '>') { 1380 1383 emitParseError(); … … 1384 1387 emitParseError(); 1385 1388 notImplemented(); 1386 m_state = BogusDOCTYPEState;1389 ADVANCE_TO(BogusDOCTYPEState); 1387 1390 } 1388 1391 // FIXME: Handle EOF properly. … … 1396 1399 else if (cc == '"') { 1397 1400 m_token->setPublicIdentifierToEmptyString(); 1398 m_state = DOCTYPEPublicIdentifierDoubleQuotedState;1401 ADVANCE_TO(DOCTYPEPublicIdentifierDoubleQuotedState); 1399 1402 } else if (cc == '\'') { 1400 1403 m_token->setPublicIdentifierToEmptyString(); 1401 m_state = DOCTYPEPublicIdentifierSingleQuotedState;1404 ADVANCE_TO(DOCTYPEPublicIdentifierSingleQuotedState); 1402 1405 } else if (cc == '>') { 1403 1406 emitParseError(); … … 1407 1410 emitParseError(); 1408 1411 notImplemented(); 1409 m_state = BogusDOCTYPEState;1412 ADVANCE_TO(BogusDOCTYPEState); 1410 1413 } 1411 1414 // FIXME: Handle EOF properly. … … 1416 1419 BEGIN_STATE(DOCTYPEPublicIdentifierDoubleQuotedState) { 1417 1420 if (cc == '"') 1418 m_state = AfterDOCTYPEPublicIdentifierState;1421 ADVANCE_TO(AfterDOCTYPEPublicIdentifierState); 1419 1422 else if (cc == '>') { 1420 1423 emitParseError(); … … 1430 1433 BEGIN_STATE(DOCTYPEPublicIdentifierSingleQuotedState) { 1431 1434 if (cc == '\'') 1432 m_state = AfterDOCTYPEPublicIdentifierState;1435 ADVANCE_TO(AfterDOCTYPEPublicIdentifierState); 1433 1436 else if (cc == '>') { 1434 1437 emitParseError(); … … 1444 1447 BEGIN_STATE(AfterDOCTYPEPublicIdentifierState) { 1445 1448 if (cc == '\x09' || cc == '\x0A' || cc == '\x0C' || cc == ' ') 1446 m_state = BetweenDOCTYPEPublicAndSystemIdentifiersState;1449 ADVANCE_TO(BetweenDOCTYPEPublicAndSystemIdentifiersState); 1447 1450 else if (cc == '>') { 1448 1451 EMIT_AND_RESUME_IN(DataState); … … 1450 1453 emitParseError(); 1451 1454 m_token->setPublicIdentifierToEmptyString(); 1452 m_state = DOCTYPESystemIdentifierDoubleQuotedState;1455 ADVANCE_TO(DOCTYPESystemIdentifierDoubleQuotedState); 1453 1456 } else if (cc == '\'') { 1454 1457 emitParseError(); 1455 1458 m_token->setPublicIdentifierToEmptyString(); 1456 m_state = DOCTYPESystemIdentifierSingleQuotedState;1459 ADVANCE_TO(DOCTYPESystemIdentifierSingleQuotedState); 1457 1460 } else { 1458 1461 emitParseError(); 1459 1462 notImplemented(); 1460 m_state = BogusDOCTYPEState;1463 ADVANCE_TO(BogusDOCTYPEState); 1461 1464 } 1462 1465 // FIXME: Handle EOF properly. … … 1467 1470 BEGIN_STATE(BetweenDOCTYPEPublicAndSystemIdentifiersState) { 1468 1471 if (cc == '\x09' || cc == '\x0A' || cc == '\x0C' || cc == ' ') 1469 m_state = BetweenDOCTYPEPublicAndSystemIdentifiersState;1472 ADVANCE_TO(BetweenDOCTYPEPublicAndSystemIdentifiersState); 1470 1473 else if (cc == '>') { 1471 1474 EMIT_AND_RESUME_IN(DataState); 1472 1475 } else if (cc == '"') { 1473 1476 m_token->setSystemIdentifierToEmptyString(); 1474 m_state = DOCTYPESystemIdentifierDoubleQuotedState;1477 ADVANCE_TO(DOCTYPESystemIdentifierDoubleQuotedState); 1475 1478 } else if (cc == '\'') { 1476 1479 m_token->setSystemIdentifierToEmptyString(); 1477 m_state = DOCTYPESystemIdentifierSingleQuotedState;1480 ADVANCE_TO(DOCTYPESystemIdentifierSingleQuotedState); 1478 1481 } else { 1479 1482 emitParseError(); 1480 1483 notImplemented(); 1481 m_state = BogusDOCTYPEState;1484 ADVANCE_TO(BogusDOCTYPEState); 1482 1485 } 1483 1486 // FIXME: Handle EOF properly. … … 1488 1491 BEGIN_STATE(AfterDOCTYPESystemKeywordState) { 1489 1492 if (cc == '\x09' || cc == '\x0A' || cc == '\x0C' || cc == ' ') 1490 m_state = BeforeDOCTYPESystemIdentifierState;1493 ADVANCE_TO(BeforeDOCTYPESystemIdentifierState); 1491 1494 else if (cc == '"') { 1492 1495 emitParseError(); 1493 1496 m_token->setSystemIdentifierToEmptyString(); 1494 m_state = DOCTYPESystemIdentifierDoubleQuotedState;1497 ADVANCE_TO(DOCTYPESystemIdentifierDoubleQuotedState); 1495 1498 } else if (cc == '\'') { 1496 1499 emitParseError(); 1497 1500 m_token->setSystemIdentifierToEmptyString(); 1498 m_state = DOCTYPESystemIdentifierSingleQuotedState;1501 ADVANCE_TO(DOCTYPESystemIdentifierSingleQuotedState); 1499 1502 } else if (cc == '>') { 1500 1503 emitParseError(); … … 1504 1507 emitParseError(); 1505 1508 notImplemented(); 1506 m_state = BogusDOCTYPEState;1509 ADVANCE_TO(BogusDOCTYPEState); 1507 1510 } 1508 1511 // FIXME: Handle EOF properly. … … 1516 1519 if (cc == '"') { 1517 1520 m_token->setSystemIdentifierToEmptyString(); 1518 m_state = DOCTYPESystemIdentifierDoubleQuotedState;1521 ADVANCE_TO(DOCTYPESystemIdentifierDoubleQuotedState); 1519 1522 } else if (cc == '\'') { 1520 1523 m_token->setSystemIdentifierToEmptyString(); 1521 m_state = DOCTYPESystemIdentifierSingleQuotedState;1524 ADVANCE_TO(DOCTYPESystemIdentifierSingleQuotedState); 1522 1525 } else if (cc == '>') { 1523 1526 emitParseError(); … … 1527 1530 emitParseError(); 1528 1531 notImplemented(); 1529 m_state = BogusDOCTYPEState;1532 ADVANCE_TO(BogusDOCTYPEState); 1530 1533 } 1531 1534 // FIXME: Handle EOF properly. … … 1536 1539 BEGIN_STATE(DOCTYPESystemIdentifierDoubleQuotedState) { 1537 1540 if (cc == '"') 1538 m_state = AfterDOCTYPESystemIdentifierState;1541 ADVANCE_TO(AfterDOCTYPESystemIdentifierState); 1539 1542 else if (cc == '>') { 1540 1543 emitParseError(); … … 1550 1553 BEGIN_STATE(DOCTYPESystemIdentifierSingleQuotedState) { 1551 1554 if (cc == '\'') 1552 m_state = AfterDOCTYPESystemIdentifierState;1555 ADVANCE_TO(AfterDOCTYPESystemIdentifierState); 1553 1556 else if (cc == '>') { 1554 1557 emitParseError(); … … 1569 1572 } else { 1570 1573 emitParseError(); 1571 m_state = BogusDOCTYPEState;1574 ADVANCE_TO(BogusDOCTYPEState); 1572 1575 } 1573 1576 // FIXME: Handle EOF properly.
Note: See TracChangeset
for help on using the changeset viewer.