diff --git a/source/com/intellij/lexer/HtmlHighlightingLexer.java b/source/com/intellij/lexer/HtmlHighlightingLexer.java index adca4a387d5a..b37052f65316 100644 --- a/source/com/intellij/lexer/HtmlHighlightingLexer.java +++ b/source/com/intellij/lexer/HtmlHighlightingLexer.java @@ -38,6 +38,7 @@ public class HtmlHighlightingLexer extends BaseHtmlLexer { tokenType==XmlTokenType.XML_COMMENT_CHARACTERS && hasSeenTag() ) { setEmbeddedLexer(); + embeddedLexer.start(getBuffer(),HtmlHighlightingLexer.super.getTokenStart(),skipToTheEndOfTheEmbeddment()); } } } @@ -62,7 +63,7 @@ public class HtmlHighlightingLexer extends BaseHtmlLexer { int state = initialState >> EMBEDDED_LEXER_STATE_SHIFT; LOG.assertTrue(hasSeenStyle() || hasSeenScript()); setEmbeddedLexer(); - embeddedLexer.start(buffer,startOffset,endOffset,state); + embeddedLexer.start(buffer,startOffset,skipToTheEndOfTheEmbeddment(),state); } else { embeddedLexer = null; } @@ -91,7 +92,6 @@ public class HtmlHighlightingLexer extends BaseHtmlLexer { if (newLexer!=null) { embeddedLexer = newLexer; - embeddedLexer.start(getBuffer(),HtmlHighlightingLexer.super.getTokenStart(),skipToTheEndOfTheEmbeddment()); } } diff --git a/source/com/intellij/lexer/_HtmlLexer.java b/source/com/intellij/lexer/_HtmlLexer.java index 9719a296a40d..3a45bb4eccc7 100644 --- a/source/com/intellij/lexer/_HtmlLexer.java +++ b/source/com/intellij/lexer/_HtmlLexer.java @@ -100,6 +100,7 @@ public class _HtmlLexer implements Lexer, Cloneable { } private boolean yy_eof_done = false; + public static final short PROCESSING_INSTRUCTION = 9; public static final short END_TAG_NAME = 4; public static final short START_TAG_NAME = 3; public static final short ATTRIBUTE_VALUE_SQ = 8; @@ -109,17 +110,18 @@ public class _HtmlLexer implements Lexer, Cloneable { public static final short TAG_ATTRIBUTES = 5; public static final short COMMENT = 2; public static final short ATTRIBUTE_VALUE_START = 6; - public static final short LAST_STATE = 9; + public static final short LAST_STATE = 10; private static final int yy_state_dtrans[] = { 0, - 59, - 12, - 71, - 72, - 73, - 22, - 27, - 31 + 64, + 13, + 76, + 77, + 78, + 23, + 28, + 32, + 34 }; private static final int YY_E_INTERNAL = 0; private static final int YY_E_MATCH = 1; @@ -212,6 +214,9 @@ private static int [][] unpackFromString(int size1, int size2, String st) YY_NO_ANCHOR, YY_NO_ANCHOR, YY_NO_ANCHOR, + YY_NO_ANCHOR, + YY_NO_ANCHOR, + YY_NO_ANCHOR, YY_NOT_ACCEPT, YY_NO_ANCHOR, YY_NO_ANCHOR, @@ -221,6 +226,7 @@ private static int [][] unpackFromString(int size1, int size2, String st) YY_NO_ANCHOR, YY_NO_ANCHOR, YY_NO_ANCHOR, + YY_NO_ANCHOR, YY_NOT_ACCEPT, YY_NO_ANCHOR, YY_NO_ANCHOR, @@ -234,6 +240,7 @@ private static int [][] unpackFromString(int size1, int size2, String st) YY_NOT_ACCEPT, YY_NO_ANCHOR, YY_NOT_ACCEPT, + YY_NO_ANCHOR, YY_NOT_ACCEPT, YY_NOT_ACCEPT, YY_NOT_ACCEPT, @@ -261,31 +268,31 @@ private static int [][] unpackFromString(int size1, int size2, String st) 1, 2, 3, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 5, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 8, 0, 9, 10, 11, 0, - 0, 12, 13, 14, 15, 16, 12, 12, - 17, 18, 12, 12, 19, 20, 12, 21, - 22, 12, 12, 12, 23, 24, 12, 12, - 12, 25, 12, 0, 26, 0, 0, 8, - 0, 12, 13, 14, 15, 16, 12, 12, - 17, 18, 12, 12, 19, 20, 12, 21, - 22, 12, 12, 12, 23, 24, 12, 12, - 12, 25, 12, 0, 0, 0, 0, 0 + 6, 6, 8, 0, 9, 10, 11, 12, + 0, 13, 14, 15, 16, 17, 13, 13, + 18, 19, 13, 13, 20, 21, 13, 22, + 23, 13, 13, 13, 24, 25, 13, 13, + 13, 26, 13, 0, 27, 0, 0, 8, + 0, 13, 14, 15, 16, 17, 13, 13, + 18, 19, 13, 13, 20, 21, 13, 22, + 23, 13, 13, 13, 24, 25, 13, 13, + 13, 26, 13, 0, 0, 0, 0, 0 }; private static final int yy_rmap[] = { 0, 1, 2, 3, 4, 4, 4, 4, - 4, 4, 4, 4, 5, 4, 6, 4, - 4, 7, 4, 4, 4, 4, 8, 4, - 4, 4, 4, 9, 4, 4, 10, 11, - 4, 12, 13, 14, 15, 16, 17, 10, - 18, 4, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 14, 20, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47 + 4, 4, 4, 4, 4, 5, 4, 6, + 4, 4, 7, 4, 4, 4, 4, 8, + 4, 4, 4, 4, 9, 4, 4, 10, + 11, 4, 12, 4, 13, 14, 15, 16, + 17, 18, 10, 19, 4, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, + 38, 15, 22, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50 }; - private static final int yy_nxt[][] = unpackFromString(48,27, -"33,1,33:7,2,33:17,-1,1,-1:25,33,-1,34,33:4,4,33:4,-1:14,33:2,-1,43,33:4,-1,33:4,-1:14,33,-1:27,36:5,52,36:21,-1:5,14:2,-1,14,-1:3,14:14,-1:6,17:2,-1,17,-1:3,17:14,-1,38,1,38,23,24,38:2,54,38:3,25,38:15,39:3,28,39:22,45,39:3,-1,39:23,42:4,32,42:21,46,33,-1,33:7,3,33:18,-1,33:3,47,33:9,49,33:11,60:3,9,60:23,36:5,68,36:21,-1:11,21,-1:15,38,-1,38,-1:2,38:2,-1,38:3,-1,38:15,42:4,-1,42:22,33,-1,33:3,51,33:9,-1,33:11,61:4,9,61:22,39:3,29,30,39:22,42:3,40,41,42:22,33,-1,33:3,5,33:21,-1:23,62,-1:24,53,-1:29,63,-1:2,33,-1,33:3,-1,33:21,36:5,69,36:21,-1:14,55,-1:23,26,-1:38,56,-1:28,57,-1:23,58,-1:20,6,-1:10,7,1,7,35,44,7:6,8,7:5,48,7:4,50,7:4,-1:20,64,-1:19,65,-1:32,10,-1:26,66,-1:25,67,-1:22,11,-1:12,36:5,70,36:32,13,36:26,-1,36:15,7:8,14,7:3,14:14,7:9,14,15,7:2,14:14,7,16,1,16:5,37,17,18,19,20,17:14,16"); + private static final int yy_nxt[][] = unpackFromString(51,28, +"36,1,36:7,2,36:18,-1,1,-1:26,36,-1,37,36:4,4,36:4,5,-1:14,36:2,-1,47,36:4,-1,36:4,-1:15,36,-1:28,39:5,56,39:22,-1:5,15:2,-1,15,-1:4,15:14,-1:6,18:2,-1,18,-1:4,18:14,-1,41,1,41,24,25,41:2,58,41:3,26,41:16,42:3,29,42:23,49,42:3,-1,42:24,45:4,33,45:22,50,46:12,60,46:15,36,-1,36:7,3,36:19,-1,36:3,51,36:10,53,36:11,65:3,10,65:24,39:5,73,39:22,-1:11,22,-1:16,41,-1,41,-1:2,41:2,-1,41:3,-1,41:16,45:4,-1,45:23,46:12,-1,46:15,36,-1,36:3,55,36:10,-1,36:11,66:4,10,66:23,42:3,30,31,42:23,45:3,43,44,45:23,36,-1,36:3,6,36:22,-1:24,67,-1:25,57,-1:30,68,-1:2,36,-1,36:3,-1,36:22,39:5,74,39:22,-1:15,59,-1:23,27,-1:40,61,-1:14,35,-1:42,62,-1:24,63,-1:21,7,-1:10,8,1,8,38,48,8:6,9,8:6,52,8:4,54,8:4,-1:21,69,-1:20,70,-1:33,11,-1:27,71,-1:26,72,-1:23,12,-1:12,39:5,75,39:33,14,39:27,-1,39:16,8:8,15,8:4,15:14,8:9,15,16,8:3,15:14,8,17,1,17:5,40,18,19,20,21,17,18:14,17"); public void _locateToken () { char yy_lookahead; @@ -367,103 +374,103 @@ private static int [][] unpackFromString(int size1, int size2, String st) case -5: break; case 5: - { myTokenType = XmlTokenType.XML_COMMENT_START; yy_lexical_state = COMMENT; return; } + { myTokenType = XmlTokenType.XML_PI_START; yy_lexical_state = PROCESSING_INSTRUCTION; return; } case -6: break; case 6: - { myTokenType = XmlTokenType.XML_DOCTYPE_START; yy_lexical_state = DOC_TYPE; return; } + { myTokenType = XmlTokenType.XML_COMMENT_START; yy_lexical_state = COMMENT; return; } case -7: break; case 7: - { myTokenType = XmlTokenType.XML_BAD_CHARACTER; return; } + { myTokenType = XmlTokenType.XML_DOCTYPE_START; yy_lexical_state = DOC_TYPE; return; } case -8: break; case 8: - { myTokenType = XmlTokenType.XML_DOCTYPE_END; yy_lexical_state = YYINITIAL; return; } + { myTokenType = XmlTokenType.XML_BAD_CHARACTER; return; } case -9: break; case 9: - { myTokenType = XmlTokenType.XML_ATTRIBUTE_VALUE_TOKEN; return;} + { myTokenType = XmlTokenType.XML_DOCTYPE_END; yy_lexical_state = YYINITIAL; return; } case -10: break; case 10: - { myTokenType = XmlTokenType.XML_NAME; return; } + { myTokenType = XmlTokenType.XML_ATTRIBUTE_VALUE_TOKEN; return;} case -11: break; case 11: - { myTokenType = XmlTokenType.XML_DOCTYPE_PUBLIC; return; } + { myTokenType = XmlTokenType.XML_NAME; return; } case -12: break; case 12: - { myTokenType = XmlTokenType.XML_COMMENT_CHARACTERS; return; } + { myTokenType = XmlTokenType.XML_DOCTYPE_PUBLIC; return; } case -13: break; case 13: - { myTokenType = XmlTokenType.XML_COMMENT_END; yy_lexical_state = YYINITIAL; return; } + { myTokenType = XmlTokenType.XML_COMMENT_CHARACTERS; return; } case -14: break; case 14: - { myTokenType = XmlTokenType.XML_NAME; yy_lexical_state = TAG_ATTRIBUTES; return; } + { myTokenType = XmlTokenType.XML_COMMENT_END; yy_lexical_state = YYINITIAL; return; } case -15: break; case 15: - { yy_lexical_state = YYINITIAL; --yy_buffer_index; break; } + { myTokenType = XmlTokenType.XML_NAME; yy_lexical_state = TAG_ATTRIBUTES; return; } case -16: break; case 16: - { myTokenType = XmlTokenType.XML_DATA_CHARACTERS; return; } + { yy_lexical_state = YYINITIAL; --yy_buffer_index; break; } case -17: break; case 17: - { myTokenType = XmlTokenType.XML_NAME; return; } + { myTokenType = XmlTokenType.XML_DATA_CHARACTERS; return; } case -18: break; case 18: - { yy_lexical_state = YYINITIAL; --yy_buffer_index; } + { myTokenType = XmlTokenType.XML_NAME; return; } case -19: break; case 19: - { myTokenType = XmlTokenType.XML_EQ; yy_lexical_state = ATTRIBUTE_VALUE_START; return; } + { yy_lexical_state = YYINITIAL; --yy_buffer_index; } case -20: break; case 20: - { myTokenType = XmlTokenType.XML_TAG_END; yy_lexical_state = YYINITIAL; return; } + { myTokenType = XmlTokenType.XML_EQ; yy_lexical_state = ATTRIBUTE_VALUE_START; return; } case -21: break; case 21: - { myTokenType = XmlTokenType.XML_EMPTY_ELEMENT_END; yy_lexical_state = YYINITIAL; return; } + { myTokenType = XmlTokenType.XML_TAG_END; yy_lexical_state = YYINITIAL; return; } case -22: break; case 22: - { myTokenType = XmlTokenType.XML_ATTRIBUTE_VALUE_TOKEN; yy_lexical_state = TAG_ATTRIBUTES; return; } + { myTokenType = XmlTokenType.XML_EMPTY_ELEMENT_END; yy_lexical_state = YYINITIAL; return; } case -23: break; case 23: - { myTokenType = XmlTokenType.XML_ATTRIBUTE_VALUE_START_DELIMITER; yy_lexical_state = ATTRIBUTE_VALUE_DQ; return; } + { myTokenType = XmlTokenType.XML_ATTRIBUTE_VALUE_TOKEN; yy_lexical_state = TAG_ATTRIBUTES; return; } case -24: break; case 24: - { myTokenType = XmlTokenType.XML_ATTRIBUTE_VALUE_START_DELIMITER; yy_lexical_state = ATTRIBUTE_VALUE_SQ; return; } + { myTokenType = XmlTokenType.XML_ATTRIBUTE_VALUE_START_DELIMITER; yy_lexical_state = ATTRIBUTE_VALUE_DQ; return; } case -25: break; case 25: - { myTokenType = XmlTokenType.XML_TAG_END; yy_lexical_state = YYINITIAL; return; } + { myTokenType = XmlTokenType.XML_ATTRIBUTE_VALUE_START_DELIMITER; yy_lexical_state = ATTRIBUTE_VALUE_SQ; return; } case -26: break; case 26: - { myTokenType = XmlTokenType.XML_EMPTY_ELEMENT_END; yy_lexical_state = YYINITIAL; return; } + { myTokenType = XmlTokenType.XML_TAG_END; yy_lexical_state = YYINITIAL; return; } case -27: break; case 27: - { myTokenType = XmlTokenType.XML_ATTRIBUTE_VALUE_TOKEN; return; } + { myTokenType = XmlTokenType.XML_EMPTY_ELEMENT_END; yy_lexical_state = YYINITIAL; return; } case -28: break; case 28: - { myTokenType = XmlTokenType.XML_ATTRIBUTE_VALUE_END_DELIMITER; yy_lexical_state = TAG_ATTRIBUTES; return; } + { myTokenType = XmlTokenType.XML_ATTRIBUTE_VALUE_TOKEN; return; } case -29: break; case 29: - { myTokenType = XmlTokenType.XML_ATTRIBUTE_VALUE_TOKEN; return; } + { myTokenType = XmlTokenType.XML_ATTRIBUTE_VALUE_END_DELIMITER; yy_lexical_state = TAG_ATTRIBUTES; return; } case -30: break; case 30: @@ -475,72 +482,92 @@ private static int [][] unpackFromString(int size1, int size2, String st) case -32: break; case 32: - { myTokenType = XmlTokenType.XML_ATTRIBUTE_VALUE_END_DELIMITER; yy_lexical_state = TAG_ATTRIBUTES; return; } + { myTokenType = XmlTokenType.XML_ATTRIBUTE_VALUE_TOKEN; return; } case -33: break; case 33: - { myTokenType = XmlTokenType.XML_DATA_CHARACTERS; return; } + { myTokenType = XmlTokenType.XML_ATTRIBUTE_VALUE_END_DELIMITER; yy_lexical_state = TAG_ATTRIBUTES; return; } case -34: break; - case 35: - { myTokenType = XmlTokenType.XML_BAD_CHARACTER; return; } + case 34: + { myTokenType = XmlTokenType.XML_PI_TARGET; return; } case -35: break; - case 36: - { myTokenType = XmlTokenType.XML_COMMENT_CHARACTERS; return; } + case 35: + { myTokenType = XmlTokenType.XML_PI_END; yy_lexical_state = YYINITIAL; return; } case -36: break; - case 37: + case 36: { myTokenType = XmlTokenType.XML_DATA_CHARACTERS; return; } case -37: break; case 38: - { myTokenType = XmlTokenType.XML_ATTRIBUTE_VALUE_TOKEN; yy_lexical_state = TAG_ATTRIBUTES; return; } + { myTokenType = XmlTokenType.XML_BAD_CHARACTER; return; } case -38: break; case 39: - { myTokenType = XmlTokenType.XML_ATTRIBUTE_VALUE_TOKEN; return; } + { myTokenType = XmlTokenType.XML_COMMENT_CHARACTERS; return; } case -39: break; case 40: - { myTokenType = XmlTokenType.XML_ATTRIBUTE_VALUE_TOKEN; return; } + { myTokenType = XmlTokenType.XML_DATA_CHARACTERS; return; } case -40: break; case 41: - { myTokenType = XmlTokenType.XML_ATTRIBUTE_VALUE_TOKEN; return; } + { myTokenType = XmlTokenType.XML_ATTRIBUTE_VALUE_TOKEN; yy_lexical_state = TAG_ATTRIBUTES; return; } case -41: break; case 42: { myTokenType = XmlTokenType.XML_ATTRIBUTE_VALUE_TOKEN; return; } case -42: break; - case 44: - { myTokenType = XmlTokenType.XML_BAD_CHARACTER; return; } + case 43: + { myTokenType = XmlTokenType.XML_ATTRIBUTE_VALUE_TOKEN; return; } case -43: break; - case 45: + case 44: { myTokenType = XmlTokenType.XML_ATTRIBUTE_VALUE_TOKEN; return; } case -44: break; - case 46: + case 45: { myTokenType = XmlTokenType.XML_ATTRIBUTE_VALUE_TOKEN; return; } case -45: break; - case 48: - { myTokenType = XmlTokenType.XML_BAD_CHARACTER; return; } + case 46: + { myTokenType = XmlTokenType.XML_PI_TARGET; return; } case -46: break; - case 50: + case 48: { myTokenType = XmlTokenType.XML_BAD_CHARACTER; return; } case -47: break; + case 49: + { myTokenType = XmlTokenType.XML_ATTRIBUTE_VALUE_TOKEN; return; } + case -48: + break; + case 50: + { myTokenType = XmlTokenType.XML_ATTRIBUTE_VALUE_TOKEN; return; } + case -49: + break; case 52: { myTokenType = XmlTokenType.XML_BAD_CHARACTER; return; } - case -48: + case -50: break; case 54: { myTokenType = XmlTokenType.XML_BAD_CHARACTER; return; } - case -49: + case -51: + break; + case 56: + { myTokenType = XmlTokenType.XML_BAD_CHARACTER; return; } + case -52: + break; + case 58: + { myTokenType = XmlTokenType.XML_BAD_CHARACTER; return; } + case -53: + break; + case 60: + { myTokenType = XmlTokenType.XML_BAD_CHARACTER; return; } + case -54: break; default: yy_error(YY_E_INTERNAL,false);