Fixed: AS3 hilight and edit XML based on CData or comment only

This commit is contained in:
Jindra Petřík
2021-03-13 21:08:23 +01:00
parent 8cbd4c4bbf
commit 65a8af4822
12 changed files with 896 additions and 767 deletions
@@ -91,6 +91,11 @@ EndOfLineComment = "//" {InputCharacter}* {LineTerminator}?
IdentFirst = [\p{Lu}\p{Ll}\p{Lt}\p{Lm}\p{Lo}_$]
IdentNext = {IdentFirst} | [\p{Nl}\p{Mn}\p{Mc}\p{Nd}\p{Pc}]
XmlCommentStart = "<!--"
XmlCommentEnd = "-->"
XmlCDataStart = "<![CDATA["
XmlCDataEnd = "]]>"
/* identifiers */
Identifier = {IdentFirst}{IdentNext}*
@@ -143,7 +148,7 @@ NamespaceSuffix = "#" {DecIntegerLiteral}
RegExp = \/([^\r\n/]|\\\/)+\/[a-z]*
%state STRING, CHARLITERAL, XMLSTARTTAG, XML, OIDENTIFIER
%state STRING, CHARLITERAL, XMLSTARTTAG, XML, OIDENTIFIER, XMLCOMMENT, XMLCDATA
%%
@@ -211,6 +216,15 @@ RegExp = \/([^\r\n/]|\\\/)+\/[a-z]*
}
}
{XmlCommentStart} {
yybegin(XMLCOMMENT);
return token(TokenType.STRING);
}
{XmlCDataStart} {
yybegin(XMLCDATA);
return token(TokenType.STRING);
}
/* operators */
"(" { return token(TokenType.OPERATOR, PARAN); }
@@ -322,12 +336,6 @@ RegExp = \/([^\r\n/]|\\\/)+\/[a-z]*
}
xmlTagName = s;
}
/*{XMLBeginTag} { yybegin(XMLSTARTTAG);
tokenStart = yychar;
tokenLength = yylength();
String s=yytext();
xmlTagName = s.substring(1);
}*/
/* identifiers */
{Identifier}{NamespaceSuffix} { return token(TokenType.REGEX); }
{Identifier} { return token(TokenType.IDENTIFIER); }
@@ -406,6 +414,28 @@ RegExp = \/([^\r\n/]|\\\/)+\/[a-z]*
{LineTerminator} { yybegin(YYINITIAL); }
}
<XMLCOMMENT> {
{XmlCommentEnd} {
yybegin(YYINITIAL);
return token(TokenType.STRING);
}
~{XmlCommentEnd} {
yypushback(3);
return token(TokenType.STRING);
}
}
<XMLCDATA> {
{XmlCDataEnd} {
yybegin(YYINITIAL);
return token(TokenType.STRING);
}
~{XmlCDataEnd} {
yypushback(3);
return token(TokenType.STRING);
}
}
/* error fallback */
[^] { }
<<EOF>> { return null; }