mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/jpexs-decompiler.git
synced 2026-07-05 00:54:16 +00:00
Compile AS3 @identifier asdoc tag as identifier replacement
This commit is contained in:
@@ -137,7 +137,7 @@ NamespaceSuffix = "#" {DecIntegerLiteral}
|
||||
|
||||
RegExp = \/([^\r\n/]|\\\/)+\/[a-z]*
|
||||
|
||||
%state STRING, CHARLITERAL, XMLSTARTTAG, XML, OIDENTIFIER
|
||||
%state STRING, CHARLITERAL, XMLSTARTTAG, XML, OIDENTIFIER, ADOC, ADOC_TAG
|
||||
|
||||
%%
|
||||
|
||||
@@ -191,6 +191,13 @@ RegExp = \/([^\r\n/]|\\\/)+\/[a-z]*
|
||||
"typeof" |
|
||||
"void" { return token(TokenType.KEYWORD); }
|
||||
|
||||
// AsDoc comments need a state so that we can highlight the @ controls
|
||||
"/**" {
|
||||
yybegin(ADOC);
|
||||
tokenStart = yychar;
|
||||
tokenLength = 3;
|
||||
}
|
||||
|
||||
/* comments */
|
||||
{Comment} { return token(TokenType.COMMENT); }
|
||||
|
||||
@@ -358,6 +365,44 @@ RegExp = \/([^\r\n/]|\\\/)+\/[a-z]*
|
||||
{LineTerminator} { yybegin(YYINITIAL); }
|
||||
}
|
||||
|
||||
<ADOC> {
|
||||
"*/" {
|
||||
yybegin(YYINITIAL);
|
||||
return token(TokenType.COMMENT, tokenStart, tokenLength + 2);
|
||||
}
|
||||
|
||||
"@" {
|
||||
yybegin(ADOC_TAG);
|
||||
int start = tokenStart;
|
||||
tokenStart = yychar;
|
||||
int len = tokenLength;
|
||||
tokenLength = 1;
|
||||
return token(TokenType.COMMENT, start, len);
|
||||
}
|
||||
|
||||
.|\n { tokenLength ++; }
|
||||
|
||||
}
|
||||
|
||||
<ADOC_TAG> {
|
||||
([:letter:])+ { tokenLength += yylength(); }
|
||||
|
||||
"*/" {
|
||||
yybegin(YYINITIAL);
|
||||
return token(TokenType.COMMENT, tokenStart, tokenLength + 2);
|
||||
}
|
||||
|
||||
.|\n {
|
||||
yybegin(ADOC);
|
||||
// length also includes the trailing quote
|
||||
int start = tokenStart;
|
||||
tokenStart = yychar;
|
||||
int len = tokenLength;
|
||||
tokenLength = 1;
|
||||
return token(TokenType.COMMENT2, start, len);
|
||||
}
|
||||
}
|
||||
|
||||
/* error fallback */
|
||||
[^] { }
|
||||
<<EOF>> { return null; }
|
||||
|
||||
@@ -66,7 +66,7 @@ import java.util.List;
|
||||
this.offset = ofst;
|
||||
prevToken = null;
|
||||
Token t = yylex();
|
||||
if (t.type != TokenType.COMMENT) {
|
||||
if (t != null && t.type != TokenType.COMMENT) {
|
||||
prevToken = t;
|
||||
}
|
||||
for (; t != null; t = yylex()) {
|
||||
@@ -151,7 +151,7 @@ RegExp = \/([^\r\n/]|\\\/)+\/[a-z]*
|
||||
VerbatimStringCharacter = [^\r\n\"]
|
||||
VerbatimString = "@\"" {VerbatimStringCharacter}* "\""
|
||||
|
||||
%state STRING, CHARLITERAL, XMLSTARTTAG, XML, OIDENTIFIER, XMLCOMMENT, XMLCDATA
|
||||
%state STRING, CHARLITERAL, XMLSTARTTAG, XML, OIDENTIFIER, XMLCOMMENT, XMLCDATA, ADOC, ADOC_TAG
|
||||
|
||||
%%
|
||||
|
||||
@@ -215,6 +215,12 @@ VerbatimString = "@\"" {VerbatimStringCharacter}* "\""
|
||||
|
||||
"new" { prevNew = true; return token(TokenType.KEYWORD); }
|
||||
|
||||
// AsDoc comments need a state so that we can highlight the @ controls
|
||||
"/**" {
|
||||
yybegin(ADOC);
|
||||
tokenStart = yychar;
|
||||
tokenLength = 3;
|
||||
}
|
||||
/* comments */
|
||||
{Comment} { return token(TokenType.COMMENT); }
|
||||
|
||||
@@ -456,6 +462,44 @@ VerbatimString = "@\"" {VerbatimStringCharacter}* "\""
|
||||
}
|
||||
}
|
||||
|
||||
<ADOC> {
|
||||
"*/" {
|
||||
yybegin(YYINITIAL);
|
||||
return token(TokenType.COMMENT, tokenStart, tokenLength + 2);
|
||||
}
|
||||
|
||||
"@" {
|
||||
yybegin(ADOC_TAG);
|
||||
int start = tokenStart;
|
||||
tokenStart = yychar;
|
||||
int len = tokenLength;
|
||||
tokenLength = 1;
|
||||
return token(TokenType.COMMENT, start, len);
|
||||
}
|
||||
|
||||
.|\n { tokenLength ++; }
|
||||
|
||||
}
|
||||
|
||||
<ADOC_TAG> {
|
||||
([:letter:])+ { tokenLength += yylength(); }
|
||||
|
||||
"*/" {
|
||||
yybegin(YYINITIAL);
|
||||
return token(TokenType.COMMENT, tokenStart, tokenLength + 2);
|
||||
}
|
||||
|
||||
.|\n {
|
||||
yybegin(ADOC);
|
||||
// length also includes the trailing quote
|
||||
int start = tokenStart;
|
||||
tokenStart = yychar;
|
||||
int len = tokenLength;
|
||||
tokenLength = 1;
|
||||
return token(TokenType.COMMENT2, start, len);
|
||||
}
|
||||
}
|
||||
|
||||
/* error fallback */
|
||||
[^] { }
|
||||
<<EOF>> { return null; }
|
||||
|
||||
Reference in New Issue
Block a user