mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/jpexs-decompiler.git
synced 2026-06-22 16:36:17 +00:00
AS3 highlighter.
Refactoring of highligter.
This commit is contained in:
@@ -18,10 +18,10 @@ All notable changes to this project will be documented in this file.
|
||||
- "Show detail" context menu item for items in folder preview
|
||||
- [#1682] AS2 - Adding class by context menu on packages
|
||||
- Simple editor - detection of english color name (based on CSS names)
|
||||
- AS1/2 - highlight variable definition and all its instances on cursor place
|
||||
- AS1/2/3 - highlight variable definition and all its instances on cursor place
|
||||
(also in edit mode)
|
||||
- AS1/2 - underline errors in the code (also in edit mode)
|
||||
- AS1/2 - highlight variables and errors on scrollbar
|
||||
- AS1/2/3 - underline errors in the code (also in edit mode)
|
||||
- AS1/2/3 - highlight variables and errors on scrollbar
|
||||
|
||||
### Changed
|
||||
- AS1/2 - Single DoAction tag inside frame is now displayed directly as frame node
|
||||
|
||||
@@ -81,6 +81,8 @@ import com.jpexs.decompiler.flash.abc.types.Float4;
|
||||
|
||||
private static String xmlTagName = "";
|
||||
|
||||
private int startPos = -1;
|
||||
|
||||
public int yychar() {
|
||||
return yychar;
|
||||
}
|
||||
@@ -249,144 +251,147 @@ RegExp = \/([^\r\n/]|\\\/)+\/[a-z]*
|
||||
<YYINITIAL> {
|
||||
|
||||
/* keywords */
|
||||
"break" { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.BREAK, yytext()); }
|
||||
"case" { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CASE, yytext()); }
|
||||
"continue" { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CONTINUE, yytext()); }
|
||||
"default" { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.DEFAULT, yytext()); }
|
||||
"do" { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.DO, yytext()); }
|
||||
"while" { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.WHILE, yytext()); }
|
||||
"else" { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.ELSE, yytext()); }
|
||||
"for" { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FOR, yytext()); }
|
||||
"each" { return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.EACH, yytext()); }
|
||||
"in" { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IN, yytext()); }
|
||||
"if" { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IF, yytext()); }
|
||||
"return" { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.RETURN, yytext()); }
|
||||
"super" { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.SUPER, yytext()); }
|
||||
"switch" { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.SWITCH, yytext()); }
|
||||
"throw" { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.THROW, yytext()); }
|
||||
"try" { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.TRY, yytext()); }
|
||||
"catch" { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CATCH, yytext()); }
|
||||
"finally" { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FINALLY, yytext()); }
|
||||
"while" { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.WHILE, yytext()); }
|
||||
"with" { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.WITH, yytext()); }
|
||||
"dynamic" { return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.DYNAMIC, yytext()); }
|
||||
"internal" { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.INTERNAL, yytext()); }
|
||||
"override" { return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.OVERRIDE, yytext()); }
|
||||
"private" { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PRIVATE, yytext()); }
|
||||
"protected" { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PROTECTED, yytext()); }
|
||||
"public" { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PUBLIC, yytext()); }
|
||||
"static" { return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.STATIC, yytext()); }
|
||||
"class" { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CLASS, yytext()); }
|
||||
"const" { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CONST, yytext()); }
|
||||
"extends" { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.EXTENDS, yytext()); }
|
||||
"function" { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FUNCTION, yytext()); }
|
||||
"get" { return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.GET, yytext()); }
|
||||
"implements" { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IMPLEMENTS, yytext()); }
|
||||
"interface" { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.INTERFACE, yytext()); }
|
||||
"namespace" { return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.NAMESPACE, yytext()); }
|
||||
"package" { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PACKAGE, yytext()); }
|
||||
"set" { return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.SET, yytext()); }
|
||||
"var" { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.VAR, yytext()); }
|
||||
"import" { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IMPORT, yytext()); }
|
||||
"use" { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.USE, yytext()); }
|
||||
"false" { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FALSE, yytext()); }
|
||||
"null" { return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.NULL, yytext()); }
|
||||
"this" { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.THIS, yytext()); }
|
||||
"true" { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.TRUE, yytext()); }
|
||||
"undefined" { return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.UNDEFINED, yytext()); }
|
||||
"Infinity" { return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.INFINITY, yytext()); }
|
||||
"NaN" { return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.NAN, yytext()); }
|
||||
"final" { return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.FINAL, yytext()); }
|
||||
"native" { return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.NATIVE, yytext()); }
|
||||
"break" { return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.BREAK, yytext()); }
|
||||
"case" { return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.CASE, yytext()); }
|
||||
"continue" { return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.CONTINUE, yytext()); }
|
||||
"default" { return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.DEFAULT, yytext()); }
|
||||
"do" { return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.DO, yytext()); }
|
||||
"while" { return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.WHILE, yytext()); }
|
||||
"else" { return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.ELSE, yytext()); }
|
||||
"for" { return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.FOR, yytext()); }
|
||||
"each" { return new ParsedSymbol(yychar(), SymbolGroup.IDENTIFIER, SymbolType.EACH, yytext()); }
|
||||
"in" { return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.IN, yytext()); }
|
||||
"if" { return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.IF, yytext()); }
|
||||
"return" { return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.RETURN, yytext()); }
|
||||
"super" { return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.SUPER, yytext()); }
|
||||
"switch" { return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.SWITCH, yytext()); }
|
||||
"throw" { return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.THROW, yytext()); }
|
||||
"try" { return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.TRY, yytext()); }
|
||||
"catch" { return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.CATCH, yytext()); }
|
||||
"finally" { return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.FINALLY, yytext()); }
|
||||
"while" { return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.WHILE, yytext()); }
|
||||
"with" { return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.WITH, yytext()); }
|
||||
"dynamic" { return new ParsedSymbol(yychar(), SymbolGroup.IDENTIFIER, SymbolType.DYNAMIC, yytext()); }
|
||||
"internal" { return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.INTERNAL, yytext()); }
|
||||
"override" { return new ParsedSymbol(yychar(), SymbolGroup.IDENTIFIER, SymbolType.OVERRIDE, yytext()); }
|
||||
"private" { return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.PRIVATE, yytext()); }
|
||||
"protected" { return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.PROTECTED, yytext()); }
|
||||
"public" { return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.PUBLIC, yytext()); }
|
||||
"static" { return new ParsedSymbol(yychar(), SymbolGroup.IDENTIFIER, SymbolType.STATIC, yytext()); }
|
||||
"class" { return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.CLASS, yytext()); }
|
||||
"const" { return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.CONST, yytext()); }
|
||||
"extends" { return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.EXTENDS, yytext()); }
|
||||
"function" { return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.FUNCTION, yytext()); }
|
||||
"get" { return new ParsedSymbol(yychar(), SymbolGroup.IDENTIFIER, SymbolType.GET, yytext()); }
|
||||
"implements" { return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.IMPLEMENTS, yytext()); }
|
||||
"interface" { return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.INTERFACE, yytext()); }
|
||||
"namespace" { return new ParsedSymbol(yychar(), SymbolGroup.IDENTIFIER, SymbolType.NAMESPACE, yytext()); }
|
||||
"package" { return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.PACKAGE, yytext()); }
|
||||
"set" { return new ParsedSymbol(yychar(), SymbolGroup.IDENTIFIER, SymbolType.SET, yytext()); }
|
||||
"var" { return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.VAR, yytext()); }
|
||||
"import" { return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.IMPORT, yytext()); }
|
||||
"use" { return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.USE, yytext()); }
|
||||
"false" { return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.FALSE, yytext()); }
|
||||
"null" { return new ParsedSymbol(yychar(), SymbolGroup.GLOBALCONST, SymbolType.NULL, yytext()); }
|
||||
"this" { return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.THIS, yytext()); }
|
||||
"true" { return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.TRUE, yytext()); }
|
||||
"undefined" { return new ParsedSymbol(yychar(), SymbolGroup.GLOBALCONST, SymbolType.UNDEFINED, yytext()); }
|
||||
"Infinity" { return new ParsedSymbol(yychar(), SymbolGroup.GLOBALCONST, SymbolType.INFINITY, yytext()); }
|
||||
"NaN" { return new ParsedSymbol(yychar(), SymbolGroup.GLOBALCONST, SymbolType.NAN, yytext()); }
|
||||
"final" { return new ParsedSymbol(yychar(), SymbolGroup.IDENTIFIER, SymbolType.FINAL, yytext()); }
|
||||
"native" { return new ParsedSymbol(yychar(), SymbolGroup.IDENTIFIER, SymbolType.NATIVE, yytext()); }
|
||||
|
||||
|
||||
{VerbatimString} {
|
||||
String verbatimString = yytext();
|
||||
verbatimString = verbatimString.substring(2, verbatimString.length() - 1);
|
||||
return new ParsedSymbol(SymbolGroup.STRING, SymbolType.STRING, verbatimString); }
|
||||
return new ParsedSymbol(yychar(), SymbolGroup.STRING, SymbolType.STRING, verbatimString); }
|
||||
|
||||
/* operators */
|
||||
|
||||
"(" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.PARENT_OPEN, yytext()); }
|
||||
")" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.PARENT_CLOSE, yytext()); }
|
||||
"{" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.CURLY_OPEN, yytext()); }
|
||||
"}" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.CURLY_CLOSE, yytext()); }
|
||||
"[" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BRACKET_OPEN, yytext()); }
|
||||
"]" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BRACKET_CLOSE, yytext()); }
|
||||
";" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.SEMICOLON, yytext()); }
|
||||
"," { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.COMMA, yytext()); }
|
||||
"..." { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.REST, yytext()); }
|
||||
"." { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DOT, yytext()); }
|
||||
"=" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN, yytext()); }
|
||||
">" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.GREATER_THAN, yytext()); }
|
||||
"<" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.LOWER_THAN, yytext()); }
|
||||
"!" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NOT, yytext()); }
|
||||
"~" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NEGATE, yytext()); }
|
||||
"?." { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NULL_DOT, yytext()); }
|
||||
"??" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NULL_COALESCE, yytext()); }
|
||||
"?" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.TERNAR, yytext()); }
|
||||
":" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.COLON, yytext()); }
|
||||
"===" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.STRICT_EQUALS, yytext()); }
|
||||
"==" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.EQUALS, yytext()); }
|
||||
"<=" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.LOWER_EQUAL, yytext()); }
|
||||
">=" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.GREATER_EQUAL, yytext()); }
|
||||
"!==" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.STRICT_NOT_EQUAL, yytext()); }
|
||||
"!=" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NOT_EQUAL, yytext()); }
|
||||
"&&=" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_AND, yytext()); }
|
||||
"&&" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.AND, yytext()); }
|
||||
"||=" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_OR, yytext()); }
|
||||
"||" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.OR, yytext()); }
|
||||
"++" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.INCREMENT, yytext()); }
|
||||
"--" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DECREMENT, yytext()); }
|
||||
"+" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.PLUS, yytext()); }
|
||||
"-" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.MINUS, yytext()); }
|
||||
"*" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.MULTIPLY, yytext()); }
|
||||
"/" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DIVIDE, yytext()); }
|
||||
"&" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BITAND, yytext()); }
|
||||
"|" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BITOR, yytext()); }
|
||||
"^" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.XOR, yytext()); }
|
||||
"%" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.MODULO, yytext()); }
|
||||
"<<" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.SHIFT_LEFT, yytext()); }
|
||||
">>" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.SHIFT_RIGHT, yytext()); }
|
||||
">>>" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.USHIFT_RIGHT, yytext()); }
|
||||
"+=" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_PLUS, yytext()); }
|
||||
"-=" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_MINUS, yytext()); }
|
||||
"*=" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_MULTIPLY, yytext()); }
|
||||
"/=" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_DIVIDE, yytext()); }
|
||||
"&=" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_BITAND, yytext()); }
|
||||
"|=" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_BITOR, yytext()); }
|
||||
"^=" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_XOR, yytext()); }
|
||||
"%=" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_MODULO, yytext()); }
|
||||
"<<=" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_SHIFT_LEFT, yytext()); }
|
||||
">>=" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_SHIFT_RIGHT, yytext()); }
|
||||
">>>=" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_USHIFT_RIGHT, yytext()); }
|
||||
"as" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.AS, yytext()); }
|
||||
"delete" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DELETE, yytext()); }
|
||||
"instanceof" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.INSTANCEOF, yytext()); }
|
||||
"is" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.IS, yytext()); }
|
||||
"::" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NAMESPACE_OP, yytext()); }
|
||||
"new" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NEW, yytext()); }
|
||||
"typeof" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.TYPEOF, yytext()); }
|
||||
"void" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.VOID, yytext()); }
|
||||
"@" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ATTRIBUTE, yytext()); }
|
||||
".(" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.FILTER, yytext()); }
|
||||
".." { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DESCENDANTS, yytext()); }
|
||||
"(" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.PARENT_OPEN, yytext()); }
|
||||
")" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.PARENT_CLOSE, yytext()); }
|
||||
"{" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.CURLY_OPEN, yytext()); }
|
||||
"}" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.CURLY_CLOSE, yytext()); }
|
||||
"[" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.BRACKET_OPEN, yytext()); }
|
||||
"]" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.BRACKET_CLOSE, yytext()); }
|
||||
";" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.SEMICOLON, yytext()); }
|
||||
"," { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.COMMA, yytext()); }
|
||||
"..." { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.REST, yytext()); }
|
||||
"." { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.DOT, yytext()); }
|
||||
"=" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.ASSIGN, yytext()); }
|
||||
">" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.GREATER_THAN, yytext()); }
|
||||
"<" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.LOWER_THAN, yytext()); }
|
||||
"!" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.NOT, yytext()); }
|
||||
"~" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.NEGATE, yytext()); }
|
||||
"?." { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.NULL_DOT, yytext()); }
|
||||
"??" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.NULL_COALESCE, yytext()); }
|
||||
"?" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.TERNAR, yytext()); }
|
||||
":" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.COLON, yytext()); }
|
||||
"===" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.STRICT_EQUALS, yytext()); }
|
||||
"==" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.EQUALS, yytext()); }
|
||||
"<=" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.LOWER_EQUAL, yytext()); }
|
||||
">=" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.GREATER_EQUAL, yytext()); }
|
||||
"!==" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.STRICT_NOT_EQUAL, yytext()); }
|
||||
"!=" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.NOT_EQUAL, yytext()); }
|
||||
"&&=" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.ASSIGN_AND, yytext()); }
|
||||
"&&" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.AND, yytext()); }
|
||||
"||=" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.ASSIGN_OR, yytext()); }
|
||||
"||" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.OR, yytext()); }
|
||||
"++" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.INCREMENT, yytext()); }
|
||||
"--" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.DECREMENT, yytext()); }
|
||||
"+" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.PLUS, yytext()); }
|
||||
"-" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.MINUS, yytext()); }
|
||||
"*" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.MULTIPLY, yytext()); }
|
||||
"/" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.DIVIDE, yytext()); }
|
||||
"&" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.BITAND, yytext()); }
|
||||
"|" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.BITOR, yytext()); }
|
||||
"^" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.XOR, yytext()); }
|
||||
"%" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.MODULO, yytext()); }
|
||||
"<<" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.SHIFT_LEFT, yytext()); }
|
||||
">>" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.SHIFT_RIGHT, yytext()); }
|
||||
">>>" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.USHIFT_RIGHT, yytext()); }
|
||||
"+=" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.ASSIGN_PLUS, yytext()); }
|
||||
"-=" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.ASSIGN_MINUS, yytext()); }
|
||||
"*=" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.ASSIGN_MULTIPLY, yytext()); }
|
||||
"/=" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.ASSIGN_DIVIDE, yytext()); }
|
||||
"&=" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.ASSIGN_BITAND, yytext()); }
|
||||
"|=" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.ASSIGN_BITOR, yytext()); }
|
||||
"^=" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.ASSIGN_XOR, yytext()); }
|
||||
"%=" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.ASSIGN_MODULO, yytext()); }
|
||||
"<<=" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.ASSIGN_SHIFT_LEFT, yytext()); }
|
||||
">>=" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.ASSIGN_SHIFT_RIGHT, yytext()); }
|
||||
">>>=" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.ASSIGN_USHIFT_RIGHT, yytext()); }
|
||||
"as" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.AS, yytext()); }
|
||||
"delete" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.DELETE, yytext()); }
|
||||
"instanceof" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.INSTANCEOF, yytext()); }
|
||||
"is" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.IS, yytext()); }
|
||||
"::" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.NAMESPACE_OP, yytext()); }
|
||||
"new" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.NEW, yytext()); }
|
||||
"typeof" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.TYPEOF, yytext()); }
|
||||
"void" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.VOID, yytext()); }
|
||||
"@" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.ATTRIBUTE, yytext()); }
|
||||
".(" { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.FILTER, yytext()); }
|
||||
".." { return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.DESCENDANTS, yytext()); }
|
||||
|
||||
/* string literal */
|
||||
\" {
|
||||
startPos = yychar();
|
||||
string.setLength(0);
|
||||
yybegin(STRING);
|
||||
}
|
||||
{Preprocessor} {
|
||||
return new ParsedSymbol(SymbolGroup.PREPROCESSOR, SymbolType.PREPROCESSOR, yytext().substring(2));
|
||||
return new ParsedSymbol(yychar(), SymbolGroup.PREPROCESSOR, SymbolType.PREPROCESSOR, yytext().substring(2));
|
||||
}
|
||||
"\u00A7" {
|
||||
startPos = yychar();
|
||||
string.setLength(0);
|
||||
yybegin(OIDENTIFIER);
|
||||
}
|
||||
|
||||
/* character literal */
|
||||
\' {
|
||||
startPos = yychar();
|
||||
string.setLength(0);
|
||||
yybegin(CHARLITERAL);
|
||||
}
|
||||
@@ -399,50 +404,50 @@ RegExp = \/([^\r\n/]|\\\/)+\/[a-z]*
|
||||
ival = ival.substring(0, ival.length() - 1);
|
||||
}
|
||||
try{
|
||||
return new ParsedSymbol(SymbolGroup.INTEGER, SymbolType.INTEGER, Integer.parseInt(ival));
|
||||
return new ParsedSymbol(yychar(), SymbolGroup.INTEGER, SymbolType.INTEGER, Integer.parseInt(ival));
|
||||
} catch(NumberFormatException nfe){
|
||||
//its too long for an Integer var
|
||||
return new ParsedSymbol(SymbolGroup.DOUBLE, SymbolType.DOUBLE, Double.parseDouble(ival));
|
||||
return new ParsedSymbol(yychar(), SymbolGroup.DOUBLE, SymbolType.DOUBLE, Double.parseDouble(ival));
|
||||
}
|
||||
}
|
||||
|
||||
{HexIntegerLiteral} {
|
||||
try {
|
||||
return new ParsedSymbol(SymbolGroup.INTEGER, SymbolType.INTEGER, Integer.parseInt(yytext().substring(2), 16));
|
||||
return new ParsedSymbol(yychar(), SymbolGroup.INTEGER, SymbolType.INTEGER, Integer.parseInt(yytext().substring(2), 16));
|
||||
} catch (NumberFormatException nfe) {
|
||||
//its too long for an Integer var
|
||||
return new ParsedSymbol(SymbolGroup.DOUBLE, SymbolType.DOUBLE, new BigInteger(yytext().substring(2), 16).doubleValue());
|
||||
return new ParsedSymbol(yychar(), SymbolGroup.DOUBLE, SymbolType.DOUBLE, new BigInteger(yytext().substring(2), 16).doubleValue());
|
||||
}
|
||||
}
|
||||
{OctIntegerLiteral} {
|
||||
try {
|
||||
return new ParsedSymbol(SymbolGroup.INTEGER, SymbolType.INTEGER, Integer.parseInt(yytext(), 8));
|
||||
return new ParsedSymbol(yychar(), SymbolGroup.INTEGER, SymbolType.INTEGER, Integer.parseInt(yytext(), 8));
|
||||
} catch (NumberFormatException nfe) {
|
||||
//its too long for an Integer var
|
||||
return new ParsedSymbol(SymbolGroup.DOUBLE, SymbolType.DOUBLE, new BigInteger(yytext(), 8).doubleValue());
|
||||
return new ParsedSymbol(yychar(), SymbolGroup.DOUBLE, SymbolType.DOUBLE, new BigInteger(yytext(), 8).doubleValue());
|
||||
}
|
||||
}
|
||||
{DoubleLiteral} {
|
||||
String dval = yytext();
|
||||
if (dval.endsWith("m")) {
|
||||
dval = dval.substring(0, dval.length() - 1);
|
||||
return new ParsedSymbol(SymbolGroup.DECIMAL, SymbolType.DECIMAL, new Decimal128(dval));
|
||||
return new ParsedSymbol(yychar(), SymbolGroup.DECIMAL, SymbolType.DECIMAL, new Decimal128(dval));
|
||||
}
|
||||
if (dval.endsWith("f")) {
|
||||
dval = dval.substring(0, dval.length() - 1);
|
||||
return new ParsedSymbol(SymbolGroup.FLOAT, SymbolType.FLOAT, Float.parseFloat(dval));
|
||||
return new ParsedSymbol(yychar(), SymbolGroup.FLOAT, SymbolType.FLOAT, Float.parseFloat(dval));
|
||||
}
|
||||
if (dval.endsWith("d")) {
|
||||
dval = dval.substring(0, dval.length() - 1);
|
||||
}
|
||||
return new ParsedSymbol(SymbolGroup.DOUBLE, SymbolType.DOUBLE, Double.parseDouble(dval));
|
||||
return new ParsedSymbol(yychar(), SymbolGroup.DOUBLE, SymbolType.DOUBLE, Double.parseDouble(dval));
|
||||
}
|
||||
{FloatLiteral} {
|
||||
String fval = yytext();
|
||||
if (fval.endsWith("f")) {
|
||||
fval = fval.substring(0, fval.length() - 1);
|
||||
}
|
||||
return new ParsedSymbol(SymbolGroup.FLOAT, SymbolType.FLOAT, Float.parseFloat(fval));
|
||||
return new ParsedSymbol(yychar(), SymbolGroup.FLOAT, SymbolType.FLOAT, Float.parseFloat(fval));
|
||||
}
|
||||
|
||||
{Float4Literal} {
|
||||
@@ -456,22 +461,23 @@ RegExp = \/([^\r\n/]|\\\/)+\/[a-z]*
|
||||
}
|
||||
fvalues[i] = Float.parseFloat(fval);
|
||||
}
|
||||
return new ParsedSymbol(SymbolGroup.FLOAT4, SymbolType.FLOAT4, new Float4(fvalues));
|
||||
return new ParsedSymbol(yychar(), SymbolGroup.FLOAT4, SymbolType.FLOAT4, new Float4(fvalues));
|
||||
}
|
||||
/* comments */
|
||||
{Comment} { yyline += count(yytext(),"\n"); }
|
||||
|
||||
{LineTerminator} {
|
||||
yyline++;
|
||||
if (enableWhiteSpace) { return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_WHITESPACE, yytext()); }
|
||||
if (enableWhiteSpace) { return new ParsedSymbol(yychar(), SymbolGroup.XML, SymbolType.XML_WHITESPACE, yytext()); }
|
||||
}
|
||||
/* whitespace */
|
||||
{WhiteSpace} { if (enableWhiteSpace) { return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_WHITESPACE, yytext()); } }
|
||||
{TypeNameSpec} { return new ParsedSymbol(SymbolGroup.TYPENAME, SymbolType.TYPENAME, yytext()); }
|
||||
{WhiteSpace} { if (enableWhiteSpace) { return new ParsedSymbol(yychar(), SymbolGroup.XML, SymbolType.XML_WHITESPACE, yytext()); } }
|
||||
{TypeNameSpec} { return new ParsedSymbol(yychar(), SymbolGroup.TYPENAME, SymbolType.TYPENAME, yytext()); }
|
||||
{XmlOpenTagStart} {
|
||||
startPos = yychar();
|
||||
yybegin(XMLOPENTAG);
|
||||
string.setLength(0);
|
||||
return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_STARTTAG_BEGIN, yytext());
|
||||
return new ParsedSymbol(yychar(), SymbolGroup.XML, SymbolType.XML_STARTTAG_BEGIN, yytext());
|
||||
}
|
||||
{XmlCommentStart} {
|
||||
string.setLength(0); string.append(yytext() ); yybegin(XMLCOMMENTALONE);
|
||||
@@ -479,20 +485,20 @@ RegExp = \/([^\r\n/]|\\\/)+\/[a-z]*
|
||||
{XmlCDataStart} {
|
||||
string.setLength(0); string.append(yytext() ); yybegin(XMLCDATAALONE);
|
||||
}
|
||||
"<{" { return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_STARTVARTAG_BEGIN, yytext()); }
|
||||
"<{" { return new ParsedSymbol(yychar(), SymbolGroup.XML, SymbolType.XML_STARTVARTAG_BEGIN, yytext()); }
|
||||
/* identifiers */
|
||||
{Identifier} { return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); }
|
||||
{Identifier} { return new ParsedSymbol(yychar(), SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); }
|
||||
/* regexp */
|
||||
{RegExp} { return new ParsedSymbol(SymbolGroup.REGEXP, SymbolType.REGEXP, yytext()); }
|
||||
{NamespaceSuffix} { return new ParsedSymbol(SymbolGroup.NAMESPACESUFFIX, SymbolType.NAMESPACESUFFIX, Integer.parseInt(yytext().substring(1))); }
|
||||
{RegExp} { return new ParsedSymbol(yychar(), SymbolGroup.REGEXP, SymbolType.REGEXP, yytext()); }
|
||||
{NamespaceSuffix} { return new ParsedSymbol(yychar(), SymbolGroup.NAMESPACESUFFIX, SymbolType.NAMESPACESUFFIX, Integer.parseInt(yytext().substring(1))); }
|
||||
}
|
||||
|
||||
<XMLCLOSETAGFINISH> {
|
||||
">" {
|
||||
yybegin(XML);
|
||||
pushback(new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.GREATER_THAN, yytext()));
|
||||
pushback(new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.GREATER_THAN, yytext()));
|
||||
if (string.length() > 0){
|
||||
pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString()));
|
||||
pushback(new ParsedSymbol(startPos, SymbolGroup.XML, SymbolType.XML_TEXT, string.toString()));
|
||||
string.setLength(0);
|
||||
}
|
||||
return lex();
|
||||
@@ -505,36 +511,36 @@ RegExp = \/([^\r\n/]|\\\/)+\/[a-z]*
|
||||
<XMLOPENTAG> {
|
||||
{XmlAttribute} {
|
||||
yybegin(XMLOPENTAGATTRIB);
|
||||
pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_ATTRIBUTENAME, yytext()));
|
||||
pushback(new ParsedSymbol(yychar(), SymbolGroup.XML, SymbolType.XML_ATTRIBUTENAME, yytext()));
|
||||
if (string.length() > 0){
|
||||
pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString()));
|
||||
pushback(new ParsedSymbol(startPos, SymbolGroup.XML, SymbolType.XML_TEXT, string.toString()));
|
||||
string.setLength(0);
|
||||
}
|
||||
return lex();
|
||||
}
|
||||
"{" {
|
||||
yybegin(YYINITIAL);
|
||||
pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_ATTRNAMEVAR_BEGIN, yytext()));
|
||||
pushback(new ParsedSymbol(yychar(), SymbolGroup.XML, SymbolType.XML_ATTRNAMEVAR_BEGIN, yytext()));
|
||||
if (string.length() > 0){
|
||||
pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString()));
|
||||
pushback(new ParsedSymbol(startPos, SymbolGroup.XML, SymbolType.XML_TEXT, string.toString()));
|
||||
string.setLength(0);
|
||||
}
|
||||
return lex();
|
||||
}
|
||||
{XmlOpenTagEnd} {
|
||||
yybegin(XML);
|
||||
pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_STARTTAG_END, yytext()));
|
||||
pushback(new ParsedSymbol(startPos, SymbolGroup.XML, SymbolType.XML_STARTTAG_END, yytext()));
|
||||
if (string.length() > 0){
|
||||
pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString()));
|
||||
pushback(new ParsedSymbol(startPos, SymbolGroup.XML, SymbolType.XML_TEXT, string.toString()));
|
||||
string.setLength(0);
|
||||
}
|
||||
return lex();
|
||||
}
|
||||
{XmlOpenTagClose} {
|
||||
yybegin(XML);
|
||||
pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_STARTFINISHTAG_END, yytext()));
|
||||
pushback(new ParsedSymbol(yychar(), SymbolGroup.XML, SymbolType.XML_STARTFINISHTAG_END, yytext()));
|
||||
if (string.length() > 0){
|
||||
pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString()));
|
||||
pushback(new ParsedSymbol(startPos, SymbolGroup.XML, SymbolType.XML_TEXT, string.toString()));
|
||||
string.setLength(0);
|
||||
}
|
||||
return lex();
|
||||
@@ -548,15 +554,15 @@ RegExp = \/([^\r\n/]|\\\/)+\/[a-z]*
|
||||
<XMLOPENTAGATTRIB> {
|
||||
\"{XmlDQuoteStringChar}*\" {
|
||||
yybegin(XMLOPENTAG);
|
||||
return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_ATTRIBUTEVALUE, yytext());
|
||||
return new ParsedSymbol(yychar(), SymbolGroup.XML, SymbolType.XML_ATTRIBUTEVALUE, yytext());
|
||||
}
|
||||
\'{XmlSQuoteStringChar}*\' {
|
||||
yybegin(XMLOPENTAG);
|
||||
return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_ATTRIBUTEVALUE_SINGLEQUOTED, yytext());
|
||||
return new ParsedSymbol(yychar(), SymbolGroup.XML, SymbolType.XML_ATTRIBUTEVALUE_SINGLEQUOTED, yytext());
|
||||
}
|
||||
"{" {
|
||||
yybegin(YYINITIAL);
|
||||
return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_ATTRVALVAR_BEGIN, yytext());
|
||||
return new ParsedSymbol(yychar(), SymbolGroup.XML, SymbolType.XML_ATTRVALVAR_BEGIN, yytext());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -567,7 +573,7 @@ RegExp = \/([^\r\n/]|\\\/)+\/[a-z]*
|
||||
string.append(yytext());
|
||||
String tos = string.toString();
|
||||
string.setLength(0);
|
||||
return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_INSTR, tos);
|
||||
return new ParsedSymbol(yychar(), SymbolGroup.XML, SymbolType.XML_INSTR, tos);
|
||||
}
|
||||
{LineTerminator} { string.append(yytext()); yyline++;}
|
||||
[^] { string.append(yytext()); }
|
||||
@@ -579,7 +585,7 @@ RegExp = \/([^\r\n/]|\\\/)+\/[a-z]*
|
||||
yybegin(XML);
|
||||
String ret = string.toString();
|
||||
string.setLength(0);
|
||||
return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_CDATA, ret);
|
||||
return new ParsedSymbol(yychar(), SymbolGroup.XML, SymbolType.XML_CDATA, ret);
|
||||
}
|
||||
{LineTerminator} { string.append(yytext()); yyline++;}
|
||||
[^] { string.append(yytext()); }
|
||||
@@ -591,7 +597,7 @@ RegExp = \/([^\r\n/]|\\\/)+\/[a-z]*
|
||||
yybegin(YYINITIAL);
|
||||
String ret = string.toString();
|
||||
string.setLength(0);
|
||||
return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_CDATA, ret);
|
||||
return new ParsedSymbol(yychar(), SymbolGroup.XML, SymbolType.XML_CDATA, ret);
|
||||
}
|
||||
{LineTerminator} { string.append(yytext()); yyline++;}
|
||||
[^] { string.append(yytext()); }
|
||||
@@ -603,7 +609,7 @@ RegExp = \/([^\r\n/]|\\\/)+\/[a-z]*
|
||||
yybegin(XML);
|
||||
String ret = string.toString();
|
||||
string.setLength(0);
|
||||
return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_COMMENT, ret);
|
||||
return new ParsedSymbol(yychar(), SymbolGroup.XML, SymbolType.XML_COMMENT, ret);
|
||||
}
|
||||
{LineTerminator} { string.append(yytext()); yyline++;}
|
||||
[^] { string.append(yytext());}
|
||||
@@ -615,7 +621,7 @@ RegExp = \/([^\r\n/]|\\\/)+\/[a-z]*
|
||||
yybegin(YYINITIAL);
|
||||
String ret = string.toString();
|
||||
string.setLength(0);
|
||||
return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_COMMENT, ret);
|
||||
return new ParsedSymbol(startPos, SymbolGroup.XML, SymbolType.XML_COMMENT, ret);
|
||||
}
|
||||
{LineTerminator} { string.append(yytext()); yyline++;}
|
||||
[^] { string.append(yytext());}
|
||||
@@ -624,7 +630,7 @@ RegExp = \/([^\r\n/]|\\\/)+\/[a-z]*
|
||||
<XML> {
|
||||
{XmlCDataStart} {
|
||||
String ret = string.toString(); string.setLength(0); string.append(yytext() ); yybegin(XMLCDATA);
|
||||
if (!ret.isEmpty()) return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, ret);
|
||||
if (!ret.isEmpty()) return new ParsedSymbol(yychar(), SymbolGroup.XML, SymbolType.XML_TEXT, ret);
|
||||
}
|
||||
{XmlInstrStart} {
|
||||
yybegin(XMLINSTR);
|
||||
@@ -632,27 +638,27 @@ RegExp = \/([^\r\n/]|\\\/)+\/[a-z]*
|
||||
String tos = string.toString();
|
||||
string.setLength(0);
|
||||
string.append(yytext());
|
||||
return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, tos);
|
||||
return new ParsedSymbol(yychar(), SymbolGroup.XML, SymbolType.XML_TEXT, tos);
|
||||
}
|
||||
string.append(yytext());
|
||||
}
|
||||
{XmlCommentStart} {
|
||||
String ret = string.toString(); string.setLength(0); string.append(yytext()); yybegin(XMLCOMMENT);
|
||||
if (!ret.isEmpty()) return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, ret);
|
||||
if (!ret.isEmpty()) return new ParsedSymbol(yychar(), SymbolGroup.XML, SymbolType.XML_TEXT, ret);
|
||||
}
|
||||
{XmlOpenTagStart} {
|
||||
yybegin(XMLOPENTAG);
|
||||
pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_STARTTAG_BEGIN, yytext()));
|
||||
pushback(new ParsedSymbol(yychar(), SymbolGroup.XML, SymbolType.XML_STARTTAG_BEGIN, yytext()));
|
||||
if (string.length() > 0){
|
||||
pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString()));
|
||||
pushback(new ParsedSymbol(startPos, SymbolGroup.XML, SymbolType.XML_TEXT, string.toString()));
|
||||
string.setLength(0);
|
||||
}
|
||||
return lex();
|
||||
}
|
||||
{XmlCloseTag} {
|
||||
pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_FINISHTAG, yytext()));
|
||||
pushback(new ParsedSymbol(yychar(), SymbolGroup.XML, SymbolType.XML_FINISHTAG, yytext()));
|
||||
if (string.length() > 0){
|
||||
pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString()));
|
||||
pushback(new ParsedSymbol(startPos, SymbolGroup.XML, SymbolType.XML_TEXT, string.toString()));
|
||||
string.setLength(0);
|
||||
}
|
||||
return lex();
|
||||
@@ -660,27 +666,27 @@ RegExp = \/([^\r\n/]|\\\/)+\/[a-z]*
|
||||
|
||||
"<{" {
|
||||
yybegin(YYINITIAL);
|
||||
pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_STARTVARTAG_BEGIN, yytext()));
|
||||
pushback(new ParsedSymbol(yychar(), SymbolGroup.XML, SymbolType.XML_STARTVARTAG_BEGIN, yytext()));
|
||||
if (string.length() > 0){
|
||||
pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString()));
|
||||
pushback(new ParsedSymbol(startPos, SymbolGroup.XML, SymbolType.XML_TEXT, string.toString()));
|
||||
string.setLength(0);
|
||||
}
|
||||
return lex();
|
||||
}
|
||||
"</{" {
|
||||
yybegin(YYINITIAL);
|
||||
pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_FINISHVARTAG_BEGIN, yytext()));
|
||||
pushback(new ParsedSymbol(yychar(), SymbolGroup.XML, SymbolType.XML_FINISHVARTAG_BEGIN, yytext()));
|
||||
if (string.length() > 0){
|
||||
pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString()));
|
||||
pushback(new ParsedSymbol(startPos, SymbolGroup.XML, SymbolType.XML_TEXT, string.toString()));
|
||||
string.setLength(0);
|
||||
}
|
||||
return lex();
|
||||
}
|
||||
"{" {
|
||||
yybegin(YYINITIAL);
|
||||
pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_VAR_BEGIN, yytext()));
|
||||
pushback(new ParsedSymbol(yychar(), SymbolGroup.XML, SymbolType.XML_VAR_BEGIN, yytext()));
|
||||
if (string.length() > 0){
|
||||
pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString()));
|
||||
pushback(new ParsedSymbol(startPos, SymbolGroup.XML, SymbolType.XML_TEXT, string.toString()));
|
||||
string.setLength(0);
|
||||
}
|
||||
return lex();
|
||||
@@ -694,7 +700,7 @@ RegExp = \/([^\r\n/]|\\\/)+\/[a-z]*
|
||||
yybegin(YYINITIAL);
|
||||
repeatNum = 1;
|
||||
// length also includes the trailing quote
|
||||
return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, string.toString());
|
||||
return new ParsedSymbol(startPos, SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, string.toString());
|
||||
}
|
||||
|
||||
{OIdentifierCharacter} { for(int r=0;r<repeatNum;r++) string.append(yytext()); repeatNum = 1;}
|
||||
@@ -725,7 +731,7 @@ RegExp = \/([^\r\n/]|\\\/)+\/[a-z]*
|
||||
// length also includes the trailing quote
|
||||
String tos = string.toString();
|
||||
string.setLength(0);
|
||||
return new ParsedSymbol(SymbolGroup.STRING, SymbolType.STRING, tos);
|
||||
return new ParsedSymbol(startPos, SymbolGroup.STRING, SymbolType.STRING, tos);
|
||||
}
|
||||
|
||||
{StringCharacter}+ { string.append(yytext()); }
|
||||
@@ -754,7 +760,7 @@ RegExp = \/([^\r\n/]|\\\/)+\/[a-z]*
|
||||
\' {
|
||||
yybegin(YYINITIAL);
|
||||
// length also includes the trailing quote
|
||||
return new ParsedSymbol(SymbolGroup.STRING, SymbolType.STRING, string.toString());
|
||||
return new ParsedSymbol(startPos, SymbolGroup.STRING, SymbolType.STRING, string.toString());
|
||||
}
|
||||
|
||||
{SingleCharacter}+ { string.append(yytext()); }
|
||||
@@ -781,4 +787,4 @@ RegExp = \/([^\r\n/]|\\\/)+\/[a-z]*
|
||||
|
||||
/* error fallback */
|
||||
[^] { }
|
||||
<<EOF>> { return new ParsedSymbol(SymbolGroup.EOF, SymbolType.EOF, null); }
|
||||
<<EOF>> { return new ParsedSymbol(yychar(), SymbolGroup.EOF, SymbolType.EOF, null); }
|
||||
|
||||
@@ -34,4 +34,15 @@ public class AVM2ParseException extends ParseException {
|
||||
public AVM2ParseException(String text, long line) {
|
||||
super(text, line);
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param text Text
|
||||
* @param line Line
|
||||
* @param position Position
|
||||
*/
|
||||
public AVM2ParseException(String text, long line, long position) {
|
||||
super(text, line, position);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -266,12 +266,12 @@ public class ActionScript3Parser {
|
||||
s = lex();
|
||||
} while (s.type == SymbolType.COMMA);
|
||||
if (s.type == SymbolType.USHIFT_RIGHT) {
|
||||
s = new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.GREATER_THAN);
|
||||
s = new ParsedSymbol(-1, SymbolGroup.OPERATOR, SymbolType.GREATER_THAN);
|
||||
lexer.pushback(s);
|
||||
lexer.pushback(s);
|
||||
}
|
||||
if (s.type == SymbolType.SHIFT_RIGHT) {
|
||||
s = new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.GREATER_THAN);
|
||||
s = new ParsedSymbol(-1, SymbolGroup.OPERATOR, SymbolType.GREATER_THAN);
|
||||
lexer.pushback(s);
|
||||
}
|
||||
expected(s, lexer.yyline(), SymbolType.GREATER_THAN);
|
||||
@@ -442,8 +442,8 @@ public class ActionScript3Parser {
|
||||
if (s.type == SymbolType.BRACKET_OPEN) {
|
||||
lexer.pushback(s);
|
||||
if (attrBracket) {
|
||||
lexer.pushback(new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ATTRIBUTE, "@"));
|
||||
lexer.pushback(new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DOT, "."));
|
||||
lexer.pushback(new ParsedSymbol(-1, SymbolGroup.OPERATOR, SymbolType.ATTRIBUTE, "@"));
|
||||
lexer.pushback(new ParsedSymbol(-1, SymbolGroup.OPERATOR, SymbolType.DOT, "."));
|
||||
}
|
||||
ret = member(allOpenedNamespaces, thisType, pkg, needsActivation, importedClasses, openedNamespaces, ret, registerVars, inFunction, inMethod, variables, abc);
|
||||
} else {
|
||||
@@ -2609,7 +2609,7 @@ public class ActionScript3Parser {
|
||||
if (!abc.hasFloat4Support()) {
|
||||
//parse again as method call
|
||||
lexer.yypushbackstr(lexer.yytext().substring("float4".length()));
|
||||
lexer.pushback(new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, "float4"));
|
||||
lexer.pushback(new ParsedSymbol(-1, SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, "float4"));
|
||||
ret = name(allOpenedNamespaces, thisType, pkg, needsActivation, false, openedNamespaces, registerVars, inFunction, inMethod, variables, importedClasses, abc);
|
||||
} else {
|
||||
ret = new Float4ValueAVM2Item(null, null, (Float4) s.value);
|
||||
@@ -2653,7 +2653,7 @@ public class ActionScript3Parser {
|
||||
s = lex();
|
||||
if (s.type == SymbolType.XML_STARTTAG_BEGIN) {
|
||||
lexer.yypushbackstr(s.value.toString().substring(1), ActionScriptLexer.YYINITIAL);
|
||||
s = new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.LOWER_THAN);
|
||||
s = new ParsedSymbol(-1, SymbolGroup.OPERATOR, SymbolType.LOWER_THAN);
|
||||
}
|
||||
if (s.type == SymbolType.FUNCTION) {
|
||||
s = lexer.lex();
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,16 +1,18 @@
|
||||
/* The following code was generated by JFlex 1.6.0 */
|
||||
|
||||
/*
|
||||
* Copyright (C) 2010-2025 JPEXS, All rights reserved.
|
||||
*
|
||||
* Copyright (C) 2010-2016 JPEXS, All rights reserved.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 3.0 of the License, or (at your option) any later version.
|
||||
*
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library.
|
||||
*/
|
||||
@@ -1099,6 +1101,8 @@ public final class ActionScriptLexer {
|
||||
|
||||
private static String xmlTagName = "";
|
||||
|
||||
private int startPos = -1;
|
||||
|
||||
public int yychar() {
|
||||
return yychar;
|
||||
}
|
||||
@@ -1470,47 +1474,47 @@ public final class ActionScriptLexer {
|
||||
case 186: break;
|
||||
case 2:
|
||||
{ yyline++;
|
||||
if (enableWhiteSpace) { return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_WHITESPACE, yytext()); }
|
||||
if (enableWhiteSpace) { return new ParsedSymbol(yychar(), SymbolGroup.XML, SymbolType.XML_WHITESPACE, yytext()); }
|
||||
}
|
||||
case 187: break;
|
||||
case 3:
|
||||
{ if (enableWhiteSpace) { return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_WHITESPACE, yytext()); }
|
||||
{ if (enableWhiteSpace) { return new ParsedSymbol(yychar(), SymbolGroup.XML, SymbolType.XML_WHITESPACE, yytext()); }
|
||||
}
|
||||
case 188: break;
|
||||
case 4:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DIVIDE, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.DIVIDE, yytext());
|
||||
}
|
||||
case 189: break;
|
||||
case 5:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.MULTIPLY, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.MULTIPLY, yytext());
|
||||
}
|
||||
case 190: break;
|
||||
case 6:
|
||||
{ return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext());
|
||||
}
|
||||
case 191: break;
|
||||
case 7:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DOT, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.DOT, yytext());
|
||||
}
|
||||
case 192: break;
|
||||
case 8:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.LOWER_THAN, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.LOWER_THAN, yytext());
|
||||
}
|
||||
case 193: break;
|
||||
case 9:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NOT, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.NOT, yytext());
|
||||
}
|
||||
case 194: break;
|
||||
case 10:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.MINUS, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.MINUS, yytext());
|
||||
}
|
||||
case 195: break;
|
||||
case 11:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.GREATER_THAN, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.GREATER_THAN, yytext());
|
||||
}
|
||||
case 196: break;
|
||||
case 12:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.COLON, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.COLON, yytext());
|
||||
}
|
||||
case 197: break;
|
||||
case 13:
|
||||
@@ -1519,94 +1523,97 @@ public final class ActionScriptLexer {
|
||||
ival = ival.substring(0, ival.length() - 1);
|
||||
}
|
||||
try{
|
||||
return new ParsedSymbol(SymbolGroup.INTEGER, SymbolType.INTEGER, Integer.parseInt(ival));
|
||||
return new ParsedSymbol(yychar(), SymbolGroup.INTEGER, SymbolType.INTEGER, Integer.parseInt(ival));
|
||||
} catch(NumberFormatException nfe){
|
||||
//its too long for an Integer var
|
||||
return new ParsedSymbol(SymbolGroup.DOUBLE, SymbolType.DOUBLE, Double.parseDouble(ival));
|
||||
return new ParsedSymbol(yychar(), SymbolGroup.DOUBLE, SymbolType.DOUBLE, Double.parseDouble(ival));
|
||||
}
|
||||
}
|
||||
case 198: break;
|
||||
case 14:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.TERNAR, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.TERNAR, yytext());
|
||||
}
|
||||
case 199: break;
|
||||
case 15:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BRACKET_OPEN, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.BRACKET_OPEN, yytext());
|
||||
}
|
||||
case 200: break;
|
||||
case 16:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BRACKET_CLOSE, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.BRACKET_CLOSE, yytext());
|
||||
}
|
||||
case 201: break;
|
||||
case 17:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.ASSIGN, yytext());
|
||||
}
|
||||
case 202: break;
|
||||
case 18:
|
||||
{ string.setLength(0);
|
||||
{ startPos = yychar();
|
||||
string.setLength(0);
|
||||
yybegin(STRING);
|
||||
}
|
||||
case 203: break;
|
||||
case 19:
|
||||
{ string.setLength(0);
|
||||
{ startPos = yychar();
|
||||
string.setLength(0);
|
||||
yybegin(CHARLITERAL);
|
||||
}
|
||||
case 204: break;
|
||||
case 20:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.PARENT_OPEN, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.PARENT_OPEN, yytext());
|
||||
}
|
||||
case 205: break;
|
||||
case 21:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.COMMA, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.COMMA, yytext());
|
||||
}
|
||||
case 206: break;
|
||||
case 22:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.PARENT_CLOSE, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.PARENT_CLOSE, yytext());
|
||||
}
|
||||
case 207: break;
|
||||
case 23:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.PLUS, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.PLUS, yytext());
|
||||
}
|
||||
case 208: break;
|
||||
case 24:
|
||||
{ string.setLength(0);
|
||||
{ startPos = yychar();
|
||||
string.setLength(0);
|
||||
yybegin(OIDENTIFIER);
|
||||
}
|
||||
case 209: break;
|
||||
case 25:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ATTRIBUTE, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.ATTRIBUTE, yytext());
|
||||
}
|
||||
case 210: break;
|
||||
case 26:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.CURLY_OPEN, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.CURLY_OPEN, yytext());
|
||||
}
|
||||
case 211: break;
|
||||
case 27:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.CURLY_CLOSE, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.CURLY_CLOSE, yytext());
|
||||
}
|
||||
case 212: break;
|
||||
case 28:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.SEMICOLON, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.SEMICOLON, yytext());
|
||||
}
|
||||
case 213: break;
|
||||
case 29:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NEGATE, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.NEGATE, yytext());
|
||||
}
|
||||
case 214: break;
|
||||
case 30:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BITAND, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.BITAND, yytext());
|
||||
}
|
||||
case 215: break;
|
||||
case 31:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BITOR, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.BITOR, yytext());
|
||||
}
|
||||
case 216: break;
|
||||
case 32:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.XOR, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.XOR, yytext());
|
||||
}
|
||||
case 217: break;
|
||||
case 33:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.MODULO, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.MODULO, yytext());
|
||||
}
|
||||
case 218: break;
|
||||
case 34:
|
||||
@@ -1622,7 +1629,7 @@ public final class ActionScriptLexer {
|
||||
// length also includes the trailing quote
|
||||
String tos = string.toString();
|
||||
string.setLength(0);
|
||||
return new ParsedSymbol(SymbolGroup.STRING, SymbolType.STRING, tos);
|
||||
return new ParsedSymbol(startPos, SymbolGroup.STRING, SymbolType.STRING, tos);
|
||||
}
|
||||
case 221: break;
|
||||
case 37:
|
||||
@@ -1632,7 +1639,7 @@ public final class ActionScriptLexer {
|
||||
case 38:
|
||||
{ yybegin(YYINITIAL);
|
||||
// length also includes the trailing quote
|
||||
return new ParsedSymbol(SymbolGroup.STRING, SymbolType.STRING, string.toString());
|
||||
return new ParsedSymbol(startPos, SymbolGroup.STRING, SymbolType.STRING, string.toString());
|
||||
}
|
||||
case 223: break;
|
||||
case 39:
|
||||
@@ -1641,9 +1648,9 @@ public final class ActionScriptLexer {
|
||||
case 224: break;
|
||||
case 40:
|
||||
{ yybegin(XML);
|
||||
pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_STARTTAG_END, yytext()));
|
||||
pushback(new ParsedSymbol(startPos, SymbolGroup.XML, SymbolType.XML_STARTTAG_END, yytext()));
|
||||
if (string.length() > 0){
|
||||
pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString()));
|
||||
pushback(new ParsedSymbol(startPos, SymbolGroup.XML, SymbolType.XML_TEXT, string.toString()));
|
||||
string.setLength(0);
|
||||
}
|
||||
return lex();
|
||||
@@ -1651,9 +1658,9 @@ public final class ActionScriptLexer {
|
||||
case 225: break;
|
||||
case 41:
|
||||
{ yybegin(YYINITIAL);
|
||||
pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_ATTRNAMEVAR_BEGIN, yytext()));
|
||||
pushback(new ParsedSymbol(yychar(), SymbolGroup.XML, SymbolType.XML_ATTRNAMEVAR_BEGIN, yytext()));
|
||||
if (string.length() > 0){
|
||||
pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString()));
|
||||
pushback(new ParsedSymbol(startPos, SymbolGroup.XML, SymbolType.XML_TEXT, string.toString()));
|
||||
string.setLength(0);
|
||||
}
|
||||
return lex();
|
||||
@@ -1661,9 +1668,9 @@ public final class ActionScriptLexer {
|
||||
case 226: break;
|
||||
case 42:
|
||||
{ yybegin(XML);
|
||||
pushback(new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.GREATER_THAN, yytext()));
|
||||
pushback(new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.GREATER_THAN, yytext()));
|
||||
if (string.length() > 0){
|
||||
pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString()));
|
||||
pushback(new ParsedSymbol(startPos, SymbolGroup.XML, SymbolType.XML_TEXT, string.toString()));
|
||||
string.setLength(0);
|
||||
}
|
||||
return lex();
|
||||
@@ -1671,7 +1678,7 @@ public final class ActionScriptLexer {
|
||||
case 227: break;
|
||||
case 43:
|
||||
{ yybegin(YYINITIAL);
|
||||
return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_ATTRVALVAR_BEGIN, yytext());
|
||||
return new ParsedSymbol(yychar(), SymbolGroup.XML, SymbolType.XML_ATTRVALVAR_BEGIN, yytext());
|
||||
}
|
||||
case 228: break;
|
||||
case 44:
|
||||
@@ -1680,9 +1687,9 @@ public final class ActionScriptLexer {
|
||||
case 229: break;
|
||||
case 45:
|
||||
{ yybegin(YYINITIAL);
|
||||
pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_VAR_BEGIN, yytext()));
|
||||
pushback(new ParsedSymbol(yychar(), SymbolGroup.XML, SymbolType.XML_VAR_BEGIN, yytext()));
|
||||
if (string.length() > 0){
|
||||
pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString()));
|
||||
pushback(new ParsedSymbol(startPos, SymbolGroup.XML, SymbolType.XML_TEXT, string.toString()));
|
||||
string.setLength(0);
|
||||
}
|
||||
return lex();
|
||||
@@ -1696,7 +1703,7 @@ public final class ActionScriptLexer {
|
||||
{ yybegin(YYINITIAL);
|
||||
repeatNum = 1;
|
||||
// length also includes the trailing quote
|
||||
return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, string.toString());
|
||||
return new ParsedSymbol(startPos, SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, string.toString());
|
||||
}
|
||||
case 232: break;
|
||||
case 48:
|
||||
@@ -1704,81 +1711,82 @@ public final class ActionScriptLexer {
|
||||
}
|
||||
case 233: break;
|
||||
case 49:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_DIVIDE, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.ASSIGN_DIVIDE, yytext());
|
||||
}
|
||||
case 234: break;
|
||||
case 50:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_MULTIPLY, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.ASSIGN_MULTIPLY, yytext());
|
||||
}
|
||||
case 235: break;
|
||||
case 51:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DESCENDANTS, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.DESCENDANTS, yytext());
|
||||
}
|
||||
case 236: break;
|
||||
case 52:
|
||||
{ return new ParsedSymbol(SymbolGroup.TYPENAME, SymbolType.TYPENAME, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.TYPENAME, SymbolType.TYPENAME, yytext());
|
||||
}
|
||||
case 237: break;
|
||||
case 53:
|
||||
{ String dval = yytext();
|
||||
if (dval.endsWith("m")) {
|
||||
dval = dval.substring(0, dval.length() - 1);
|
||||
return new ParsedSymbol(SymbolGroup.DECIMAL, SymbolType.DECIMAL, new Decimal128(dval));
|
||||
return new ParsedSymbol(yychar(), SymbolGroup.DECIMAL, SymbolType.DECIMAL, new Decimal128(dval));
|
||||
}
|
||||
if (dval.endsWith("f")) {
|
||||
dval = dval.substring(0, dval.length() - 1);
|
||||
return new ParsedSymbol(SymbolGroup.FLOAT, SymbolType.FLOAT, Float.parseFloat(dval));
|
||||
return new ParsedSymbol(yychar(), SymbolGroup.FLOAT, SymbolType.FLOAT, Float.parseFloat(dval));
|
||||
}
|
||||
if (dval.endsWith("d")) {
|
||||
dval = dval.substring(0, dval.length() - 1);
|
||||
}
|
||||
return new ParsedSymbol(SymbolGroup.DOUBLE, SymbolType.DOUBLE, Double.parseDouble(dval));
|
||||
return new ParsedSymbol(yychar(), SymbolGroup.DOUBLE, SymbolType.DOUBLE, Double.parseDouble(dval));
|
||||
}
|
||||
case 238: break;
|
||||
case 54:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.FILTER, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.FILTER, yytext());
|
||||
}
|
||||
case 239: break;
|
||||
case 55:
|
||||
{ yybegin(XMLOPENTAG);
|
||||
{ startPos = yychar();
|
||||
yybegin(XMLOPENTAG);
|
||||
string.setLength(0);
|
||||
return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_STARTTAG_BEGIN, yytext());
|
||||
return new ParsedSymbol(yychar(), SymbolGroup.XML, SymbolType.XML_STARTTAG_BEGIN, yytext());
|
||||
}
|
||||
case 240: break;
|
||||
case 56:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.SHIFT_LEFT, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.SHIFT_LEFT, yytext());
|
||||
}
|
||||
case 241: break;
|
||||
case 57:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.LOWER_EQUAL, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.LOWER_EQUAL, yytext());
|
||||
}
|
||||
case 242: break;
|
||||
case 58:
|
||||
{ return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_STARTVARTAG_BEGIN, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.XML, SymbolType.XML_STARTVARTAG_BEGIN, yytext());
|
||||
}
|
||||
case 243: break;
|
||||
case 59:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NOT_EQUAL, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.NOT_EQUAL, yytext());
|
||||
}
|
||||
case 244: break;
|
||||
case 60:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DECREMENT, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.DECREMENT, yytext());
|
||||
}
|
||||
case 245: break;
|
||||
case 61:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_MINUS, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.ASSIGN_MINUS, yytext());
|
||||
}
|
||||
case 246: break;
|
||||
case 62:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.SHIFT_RIGHT, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.SHIFT_RIGHT, yytext());
|
||||
}
|
||||
case 247: break;
|
||||
case 63:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.GREATER_EQUAL, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.GREATER_EQUAL, yytext());
|
||||
}
|
||||
case 248: break;
|
||||
case 64:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NAMESPACE_OP, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.NAMESPACE_OP, yytext());
|
||||
}
|
||||
case 249: break;
|
||||
case 65:
|
||||
@@ -1786,84 +1794,84 @@ public final class ActionScriptLexer {
|
||||
if (fval.endsWith("f")) {
|
||||
fval = fval.substring(0, fval.length() - 1);
|
||||
}
|
||||
return new ParsedSymbol(SymbolGroup.FLOAT, SymbolType.FLOAT, Float.parseFloat(fval));
|
||||
return new ParsedSymbol(yychar(), SymbolGroup.FLOAT, SymbolType.FLOAT, Float.parseFloat(fval));
|
||||
}
|
||||
case 250: break;
|
||||
case 66:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NULL_DOT, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.NULL_DOT, yytext());
|
||||
}
|
||||
case 251: break;
|
||||
case 67:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NULL_COALESCE, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.NULL_COALESCE, yytext());
|
||||
}
|
||||
case 252: break;
|
||||
case 68:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.EQUALS, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.EQUALS, yytext());
|
||||
}
|
||||
case 253: break;
|
||||
case 69:
|
||||
{ try {
|
||||
return new ParsedSymbol(SymbolGroup.INTEGER, SymbolType.INTEGER, Integer.parseInt(yytext(), 8));
|
||||
return new ParsedSymbol(yychar(), SymbolGroup.INTEGER, SymbolType.INTEGER, Integer.parseInt(yytext(), 8));
|
||||
} catch (NumberFormatException nfe) {
|
||||
//its too long for an Integer var
|
||||
return new ParsedSymbol(SymbolGroup.DOUBLE, SymbolType.DOUBLE, new BigInteger(yytext(), 8).doubleValue());
|
||||
return new ParsedSymbol(yychar(), SymbolGroup.DOUBLE, SymbolType.DOUBLE, new BigInteger(yytext(), 8).doubleValue());
|
||||
}
|
||||
}
|
||||
case 254: break;
|
||||
case 70:
|
||||
{ return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.DO, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.DO, yytext());
|
||||
}
|
||||
case 255: break;
|
||||
case 71:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.AS, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.AS, yytext());
|
||||
}
|
||||
case 256: break;
|
||||
case 72:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_PLUS, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.ASSIGN_PLUS, yytext());
|
||||
}
|
||||
case 257: break;
|
||||
case 73:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.INCREMENT, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.INCREMENT, yytext());
|
||||
}
|
||||
case 258: break;
|
||||
case 74:
|
||||
{ return new ParsedSymbol(SymbolGroup.NAMESPACESUFFIX, SymbolType.NAMESPACESUFFIX, Integer.parseInt(yytext().substring(1)));
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.NAMESPACESUFFIX, SymbolType.NAMESPACESUFFIX, Integer.parseInt(yytext().substring(1)));
|
||||
}
|
||||
case 259: break;
|
||||
case 75:
|
||||
{ return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IF, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.IF, yytext());
|
||||
}
|
||||
case 260: break;
|
||||
case 76:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.IS, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.IS, yytext());
|
||||
}
|
||||
case 261: break;
|
||||
case 77:
|
||||
{ return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IN, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.IN, yytext());
|
||||
}
|
||||
case 262: break;
|
||||
case 78:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_BITAND, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.ASSIGN_BITAND, yytext());
|
||||
}
|
||||
case 263: break;
|
||||
case 79:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.AND, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.AND, yytext());
|
||||
}
|
||||
case 264: break;
|
||||
case 80:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_BITOR, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.ASSIGN_BITOR, yytext());
|
||||
}
|
||||
case 265: break;
|
||||
case 81:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.OR, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.OR, yytext());
|
||||
}
|
||||
case 266: break;
|
||||
case 82:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_XOR, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.ASSIGN_XOR, yytext());
|
||||
}
|
||||
case 267: break;
|
||||
case 83:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_MODULO, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.ASSIGN_MODULO, yytext());
|
||||
}
|
||||
case 268: break;
|
||||
case 84:
|
||||
@@ -1904,9 +1912,9 @@ public final class ActionScriptLexer {
|
||||
case 277: break;
|
||||
case 93:
|
||||
{ yybegin(XML);
|
||||
pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_STARTFINISHTAG_END, yytext()));
|
||||
pushback(new ParsedSymbol(yychar(), SymbolGroup.XML, SymbolType.XML_STARTFINISHTAG_END, yytext()));
|
||||
if (string.length() > 0){
|
||||
pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString()));
|
||||
pushback(new ParsedSymbol(startPos, SymbolGroup.XML, SymbolType.XML_TEXT, string.toString()));
|
||||
string.setLength(0);
|
||||
}
|
||||
return lex();
|
||||
@@ -1914,9 +1922,9 @@ public final class ActionScriptLexer {
|
||||
case 278: break;
|
||||
case 94:
|
||||
{ yybegin(XMLOPENTAGATTRIB);
|
||||
pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_ATTRIBUTENAME, yytext()));
|
||||
pushback(new ParsedSymbol(yychar(), SymbolGroup.XML, SymbolType.XML_ATTRIBUTENAME, yytext()));
|
||||
if (string.length() > 0){
|
||||
pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString()));
|
||||
pushback(new ParsedSymbol(startPos, SymbolGroup.XML, SymbolType.XML_TEXT, string.toString()));
|
||||
string.setLength(0);
|
||||
}
|
||||
return lex();
|
||||
@@ -1924,12 +1932,12 @@ public final class ActionScriptLexer {
|
||||
case 279: break;
|
||||
case 95:
|
||||
{ yybegin(XMLOPENTAG);
|
||||
return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_ATTRIBUTEVALUE, yytext());
|
||||
return new ParsedSymbol(yychar(), SymbolGroup.XML, SymbolType.XML_ATTRIBUTEVALUE, yytext());
|
||||
}
|
||||
case 280: break;
|
||||
case 96:
|
||||
{ yybegin(XMLOPENTAG);
|
||||
return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_ATTRIBUTEVALUE_SINGLEQUOTED, yytext());
|
||||
return new ParsedSymbol(yychar(), SymbolGroup.XML, SymbolType.XML_ATTRIBUTEVALUE_SINGLEQUOTED, yytext());
|
||||
}
|
||||
case 281: break;
|
||||
case 97:
|
||||
@@ -1937,14 +1945,14 @@ public final class ActionScriptLexer {
|
||||
string.append(yytext());
|
||||
String tos = string.toString();
|
||||
string.setLength(0);
|
||||
return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_INSTR, tos);
|
||||
return new ParsedSymbol(yychar(), SymbolGroup.XML, SymbolType.XML_INSTR, tos);
|
||||
}
|
||||
case 282: break;
|
||||
case 98:
|
||||
{ yybegin(XMLOPENTAG);
|
||||
pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_STARTTAG_BEGIN, yytext()));
|
||||
pushback(new ParsedSymbol(yychar(), SymbolGroup.XML, SymbolType.XML_STARTTAG_BEGIN, yytext()));
|
||||
if (string.length() > 0){
|
||||
pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString()));
|
||||
pushback(new ParsedSymbol(startPos, SymbolGroup.XML, SymbolType.XML_TEXT, string.toString()));
|
||||
string.setLength(0);
|
||||
}
|
||||
return lex();
|
||||
@@ -1952,9 +1960,9 @@ public final class ActionScriptLexer {
|
||||
case 283: break;
|
||||
case 99:
|
||||
{ yybegin(YYINITIAL);
|
||||
pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_STARTVARTAG_BEGIN, yytext()));
|
||||
pushback(new ParsedSymbol(yychar(), SymbolGroup.XML, SymbolType.XML_STARTVARTAG_BEGIN, yytext()));
|
||||
if (string.length() > 0){
|
||||
pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString()));
|
||||
pushback(new ParsedSymbol(startPos, SymbolGroup.XML, SymbolType.XML_TEXT, string.toString()));
|
||||
string.setLength(0);
|
||||
}
|
||||
return lex();
|
||||
@@ -1993,90 +2001,90 @@ public final class ActionScriptLexer {
|
||||
}
|
||||
case 292: break;
|
||||
case 108:
|
||||
{ return new ParsedSymbol(SymbolGroup.REGEXP, SymbolType.REGEXP, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.REGEXP, SymbolType.REGEXP, yytext());
|
||||
}
|
||||
case 293: break;
|
||||
case 109:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.REST, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.REST, yytext());
|
||||
}
|
||||
case 294: break;
|
||||
case 110:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_SHIFT_LEFT, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.ASSIGN_SHIFT_LEFT, yytext());
|
||||
}
|
||||
case 295: break;
|
||||
case 111:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.STRICT_NOT_EQUAL, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.STRICT_NOT_EQUAL, yytext());
|
||||
}
|
||||
case 296: break;
|
||||
case 112:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.USHIFT_RIGHT, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.USHIFT_RIGHT, yytext());
|
||||
}
|
||||
case 297: break;
|
||||
case 113:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_SHIFT_RIGHT, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.ASSIGN_SHIFT_RIGHT, yytext());
|
||||
}
|
||||
case 298: break;
|
||||
case 114:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.STRICT_EQUALS, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.STRICT_EQUALS, yytext());
|
||||
}
|
||||
case 299: break;
|
||||
case 115:
|
||||
{ try {
|
||||
return new ParsedSymbol(SymbolGroup.INTEGER, SymbolType.INTEGER, Integer.parseInt(yytext().substring(2), 16));
|
||||
return new ParsedSymbol(yychar(), SymbolGroup.INTEGER, SymbolType.INTEGER, Integer.parseInt(yytext().substring(2), 16));
|
||||
} catch (NumberFormatException nfe) {
|
||||
//its too long for an Integer var
|
||||
return new ParsedSymbol(SymbolGroup.DOUBLE, SymbolType.DOUBLE, new BigInteger(yytext().substring(2), 16).doubleValue());
|
||||
return new ParsedSymbol(yychar(), SymbolGroup.DOUBLE, SymbolType.DOUBLE, new BigInteger(yytext().substring(2), 16).doubleValue());
|
||||
}
|
||||
}
|
||||
case 300: break;
|
||||
case 116:
|
||||
{ return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.USE, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.USE, yytext());
|
||||
}
|
||||
case 301: break;
|
||||
case 117:
|
||||
{ return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FOR, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.FOR, yytext());
|
||||
}
|
||||
case 302: break;
|
||||
case 118:
|
||||
{ return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.TRY, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.TRY, yytext());
|
||||
}
|
||||
case 303: break;
|
||||
case 119:
|
||||
{ return new ParsedSymbol(SymbolGroup.PREPROCESSOR, SymbolType.PREPROCESSOR, yytext().substring(2));
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.PREPROCESSOR, SymbolType.PREPROCESSOR, yytext().substring(2));
|
||||
}
|
||||
case 304: break;
|
||||
case 120:
|
||||
{ String verbatimString = yytext();
|
||||
verbatimString = verbatimString.substring(2, verbatimString.length() - 1);
|
||||
return new ParsedSymbol(SymbolGroup.STRING, SymbolType.STRING, verbatimString);
|
||||
return new ParsedSymbol(yychar(), SymbolGroup.STRING, SymbolType.STRING, verbatimString);
|
||||
}
|
||||
case 305: break;
|
||||
case 121:
|
||||
{ return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.SET, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.IDENTIFIER, SymbolType.SET, yytext());
|
||||
}
|
||||
case 306: break;
|
||||
case 122:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NEW, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.NEW, yytext());
|
||||
}
|
||||
case 307: break;
|
||||
case 123:
|
||||
{ return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.VAR, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.VAR, yytext());
|
||||
}
|
||||
case 308: break;
|
||||
case 124:
|
||||
{ return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.GET, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.IDENTIFIER, SymbolType.GET, yytext());
|
||||
}
|
||||
case 309: break;
|
||||
case 125:
|
||||
{ return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.NAN, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.GLOBALCONST, SymbolType.NAN, yytext());
|
||||
}
|
||||
case 310: break;
|
||||
case 126:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_AND, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.ASSIGN_AND, yytext());
|
||||
}
|
||||
case 311: break;
|
||||
case 127:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_OR, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.ASSIGN_OR, yytext());
|
||||
}
|
||||
case 312: break;
|
||||
case 128:
|
||||
@@ -2084,7 +2092,7 @@ public final class ActionScriptLexer {
|
||||
yybegin(XML);
|
||||
String ret = string.toString();
|
||||
string.setLength(0);
|
||||
return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_CDATA, ret);
|
||||
return new ParsedSymbol(yychar(), SymbolGroup.XML, SymbolType.XML_CDATA, ret);
|
||||
}
|
||||
case 313: break;
|
||||
case 129:
|
||||
@@ -2092,14 +2100,14 @@ public final class ActionScriptLexer {
|
||||
yybegin(XML);
|
||||
String ret = string.toString();
|
||||
string.setLength(0);
|
||||
return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_COMMENT, ret);
|
||||
return new ParsedSymbol(yychar(), SymbolGroup.XML, SymbolType.XML_COMMENT, ret);
|
||||
}
|
||||
case 314: break;
|
||||
case 130:
|
||||
{ yybegin(YYINITIAL);
|
||||
pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_FINISHVARTAG_BEGIN, yytext()));
|
||||
pushback(new ParsedSymbol(yychar(), SymbolGroup.XML, SymbolType.XML_FINISHVARTAG_BEGIN, yytext()));
|
||||
if (string.length() > 0){
|
||||
pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString()));
|
||||
pushback(new ParsedSymbol(startPos, SymbolGroup.XML, SymbolType.XML_TEXT, string.toString()));
|
||||
string.setLength(0);
|
||||
}
|
||||
return lex();
|
||||
@@ -2111,7 +2119,7 @@ public final class ActionScriptLexer {
|
||||
String tos = string.toString();
|
||||
string.setLength(0);
|
||||
string.append(yytext());
|
||||
return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, tos);
|
||||
return new ParsedSymbol(yychar(), SymbolGroup.XML, SymbolType.XML_TEXT, tos);
|
||||
}
|
||||
string.append(yytext());
|
||||
}
|
||||
@@ -2121,7 +2129,7 @@ public final class ActionScriptLexer {
|
||||
yybegin(YYINITIAL);
|
||||
String ret = string.toString();
|
||||
string.setLength(0);
|
||||
return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_CDATA, ret);
|
||||
return new ParsedSymbol(yychar(), SymbolGroup.XML, SymbolType.XML_CDATA, ret);
|
||||
}
|
||||
case 317: break;
|
||||
case 133:
|
||||
@@ -2129,7 +2137,7 @@ public final class ActionScriptLexer {
|
||||
yybegin(YYINITIAL);
|
||||
String ret = string.toString();
|
||||
string.setLength(0);
|
||||
return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_COMMENT, ret);
|
||||
return new ParsedSymbol(startPos, SymbolGroup.XML, SymbolType.XML_COMMENT, ret);
|
||||
}
|
||||
case 318: break;
|
||||
case 134:
|
||||
@@ -2137,39 +2145,39 @@ public final class ActionScriptLexer {
|
||||
}
|
||||
case 319: break;
|
||||
case 135:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_USHIFT_RIGHT, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.ASSIGN_USHIFT_RIGHT, yytext());
|
||||
}
|
||||
case 320: break;
|
||||
case 136:
|
||||
{ return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CASE, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.CASE, yytext());
|
||||
}
|
||||
case 321: break;
|
||||
case 137:
|
||||
{ return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.TRUE, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.TRUE, yytext());
|
||||
}
|
||||
case 322: break;
|
||||
case 138:
|
||||
{ return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.THIS, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.THIS, yytext());
|
||||
}
|
||||
case 323: break;
|
||||
case 139:
|
||||
{ return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.ELSE, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.ELSE, yytext());
|
||||
}
|
||||
case 324: break;
|
||||
case 140:
|
||||
{ return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.EACH, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.IDENTIFIER, SymbolType.EACH, yytext());
|
||||
}
|
||||
case 325: break;
|
||||
case 141:
|
||||
{ return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.NULL, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.GLOBALCONST, SymbolType.NULL, yytext());
|
||||
}
|
||||
case 326: break;
|
||||
case 142:
|
||||
{ return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.WITH, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.WITH, yytext());
|
||||
}
|
||||
case 327: break;
|
||||
case 143:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.VOID, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.VOID, yytext());
|
||||
}
|
||||
case 328: break;
|
||||
case 144:
|
||||
@@ -2178,9 +2186,9 @@ public final class ActionScriptLexer {
|
||||
}
|
||||
case 329: break;
|
||||
case 145:
|
||||
{ pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_FINISHTAG, yytext()));
|
||||
{ pushback(new ParsedSymbol(yychar(), SymbolGroup.XML, SymbolType.XML_FINISHTAG, yytext()));
|
||||
if (string.length() > 0){
|
||||
pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString()));
|
||||
pushback(new ParsedSymbol(startPos, SymbolGroup.XML, SymbolType.XML_TEXT, string.toString()));
|
||||
string.setLength(0);
|
||||
}
|
||||
return lex();
|
||||
@@ -2188,7 +2196,7 @@ public final class ActionScriptLexer {
|
||||
case 330: break;
|
||||
case 146:
|
||||
{ String ret = string.toString(); string.setLength(0); string.append(yytext()); yybegin(XMLCOMMENT);
|
||||
if (!ret.isEmpty()) return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, ret);
|
||||
if (!ret.isEmpty()) return new ParsedSymbol(yychar(), SymbolGroup.XML, SymbolType.XML_TEXT, ret);
|
||||
}
|
||||
case 331: break;
|
||||
case 147:
|
||||
@@ -2201,115 +2209,115 @@ public final class ActionScriptLexer {
|
||||
}
|
||||
case 333: break;
|
||||
case 149:
|
||||
{ return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CLASS, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.CLASS, yytext());
|
||||
}
|
||||
case 334: break;
|
||||
case 150:
|
||||
{ return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CONST, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.CONST, yytext());
|
||||
}
|
||||
case 335: break;
|
||||
case 151:
|
||||
{ return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CATCH, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.CATCH, yytext());
|
||||
}
|
||||
case 336: break;
|
||||
case 152:
|
||||
{ return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FALSE, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.FALSE, yytext());
|
||||
}
|
||||
case 337: break;
|
||||
case 153:
|
||||
{ return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.FINAL, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.IDENTIFIER, SymbolType.FINAL, yytext());
|
||||
}
|
||||
case 338: break;
|
||||
case 154:
|
||||
{ return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.THROW, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.THROW, yytext());
|
||||
}
|
||||
case 339: break;
|
||||
case 155:
|
||||
{ return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.BREAK, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.BREAK, yytext());
|
||||
}
|
||||
case 340: break;
|
||||
case 156:
|
||||
{ return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.SUPER, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.SUPER, yytext());
|
||||
}
|
||||
case 341: break;
|
||||
case 157:
|
||||
{ return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.WHILE, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.WHILE, yytext());
|
||||
}
|
||||
case 342: break;
|
||||
case 158:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DELETE, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.DELETE, yytext());
|
||||
}
|
||||
case 343: break;
|
||||
case 159:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.TYPEOF, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.TYPEOF, yytext());
|
||||
}
|
||||
case 344: break;
|
||||
case 160:
|
||||
{ return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.RETURN, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.RETURN, yytext());
|
||||
}
|
||||
case 345: break;
|
||||
case 161:
|
||||
{ return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.STATIC, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.IDENTIFIER, SymbolType.STATIC, yytext());
|
||||
}
|
||||
case 346: break;
|
||||
case 162:
|
||||
{ return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.SWITCH, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.SWITCH, yytext());
|
||||
}
|
||||
case 347: break;
|
||||
case 163:
|
||||
{ return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.NATIVE, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.IDENTIFIER, SymbolType.NATIVE, yytext());
|
||||
}
|
||||
case 348: break;
|
||||
case 164:
|
||||
{ return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IMPORT, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.IMPORT, yytext());
|
||||
}
|
||||
case 349: break;
|
||||
case 165:
|
||||
{ return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PUBLIC, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.PUBLIC, yytext());
|
||||
}
|
||||
case 350: break;
|
||||
case 166:
|
||||
{ return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.DEFAULT, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.DEFAULT, yytext());
|
||||
}
|
||||
case 351: break;
|
||||
case 167:
|
||||
{ return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.DYNAMIC, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.IDENTIFIER, SymbolType.DYNAMIC, yytext());
|
||||
}
|
||||
case 352: break;
|
||||
case 168:
|
||||
{ return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FINALLY, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.FINALLY, yytext());
|
||||
}
|
||||
case 353: break;
|
||||
case 169:
|
||||
{ return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.EXTENDS, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.EXTENDS, yytext());
|
||||
}
|
||||
case 354: break;
|
||||
case 170:
|
||||
{ return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PACKAGE, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.PACKAGE, yytext());
|
||||
}
|
||||
case 355: break;
|
||||
case 171:
|
||||
{ return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PRIVATE, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.PRIVATE, yytext());
|
||||
}
|
||||
case 356: break;
|
||||
case 172:
|
||||
{ return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CONTINUE, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.CONTINUE, yytext());
|
||||
}
|
||||
case 357: break;
|
||||
case 173:
|
||||
{ return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FUNCTION, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.FUNCTION, yytext());
|
||||
}
|
||||
case 358: break;
|
||||
case 174:
|
||||
{ return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.OVERRIDE, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.IDENTIFIER, SymbolType.OVERRIDE, yytext());
|
||||
}
|
||||
case 359: break;
|
||||
case 175:
|
||||
{ return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.INTERNAL, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.INTERNAL, yytext());
|
||||
}
|
||||
case 360: break;
|
||||
case 176:
|
||||
{ return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.INFINITY, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.GLOBALCONST, SymbolType.INFINITY, yytext());
|
||||
}
|
||||
case 361: break;
|
||||
case 177:
|
||||
@@ -2317,32 +2325,32 @@ public final class ActionScriptLexer {
|
||||
}
|
||||
case 362: break;
|
||||
case 178:
|
||||
{ return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.UNDEFINED, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.GLOBALCONST, SymbolType.UNDEFINED, yytext());
|
||||
}
|
||||
case 363: break;
|
||||
case 179:
|
||||
{ return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.NAMESPACE, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.IDENTIFIER, SymbolType.NAMESPACE, yytext());
|
||||
}
|
||||
case 364: break;
|
||||
case 180:
|
||||
{ return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.INTERFACE, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.INTERFACE, yytext());
|
||||
}
|
||||
case 365: break;
|
||||
case 181:
|
||||
{ return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PROTECTED, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.PROTECTED, yytext());
|
||||
}
|
||||
case 366: break;
|
||||
case 182:
|
||||
{ String ret = string.toString(); string.setLength(0); string.append(yytext() ); yybegin(XMLCDATA);
|
||||
if (!ret.isEmpty()) return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, ret);
|
||||
if (!ret.isEmpty()) return new ParsedSymbol(yychar(), SymbolGroup.XML, SymbolType.XML_TEXT, ret);
|
||||
}
|
||||
case 367: break;
|
||||
case 183:
|
||||
{ return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IMPLEMENTS, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.KEYWORD, SymbolType.IMPLEMENTS, yytext());
|
||||
}
|
||||
case 368: break;
|
||||
case 184:
|
||||
{ return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.INSTANCEOF, yytext());
|
||||
{ return new ParsedSymbol(yychar(), SymbolGroup.OPERATOR, SymbolType.INSTANCEOF, yytext());
|
||||
}
|
||||
case 369: break;
|
||||
case 185:
|
||||
@@ -2356,14 +2364,14 @@ public final class ActionScriptLexer {
|
||||
}
|
||||
fvalues[i] = Float.parseFloat(fval);
|
||||
}
|
||||
return new ParsedSymbol(SymbolGroup.FLOAT4, SymbolType.FLOAT4, new Float4(fvalues));
|
||||
return new ParsedSymbol(yychar(), SymbolGroup.FLOAT4, SymbolType.FLOAT4, new Float4(fvalues));
|
||||
}
|
||||
case 370: break;
|
||||
default:
|
||||
if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
|
||||
zzAtEOF = true;
|
||||
{
|
||||
return new ParsedSymbol(SymbolGroup.EOF, SymbolType.EOF, null);
|
||||
return new ParsedSymbol(yychar(), SymbolGroup.EOF, SymbolType.EOF, null);
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -37,13 +37,20 @@ public class ParsedSymbol {
|
||||
* Type
|
||||
*/
|
||||
public SymbolType type;
|
||||
|
||||
/**
|
||||
* Position in source text
|
||||
*/
|
||||
public int position;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
* @param position Position
|
||||
* @param group Group
|
||||
* @param type Type
|
||||
*/
|
||||
public ParsedSymbol(SymbolGroup group, SymbolType type) {
|
||||
public ParsedSymbol(int position, SymbolGroup group, SymbolType type) {
|
||||
this.position = position;
|
||||
this.group = group;
|
||||
this.type = type;
|
||||
this.value = null;
|
||||
@@ -51,11 +58,13 @@ public class ParsedSymbol {
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
* @param position Position
|
||||
* @param group Group
|
||||
* @param type Type
|
||||
* @param value Value
|
||||
*/
|
||||
public ParsedSymbol(SymbolGroup group, SymbolType type, Object value) {
|
||||
public ParsedSymbol(int position, SymbolGroup group, SymbolType type, Object value) {
|
||||
this.position = position;
|
||||
this.group = group;
|
||||
this.type = type;
|
||||
this.value = value;
|
||||
|
||||
@@ -14,21 +14,26 @@
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library.
|
||||
*/
|
||||
package com.jpexs.decompiler.flash.action.parser.script.variables;
|
||||
package com.jpexs.decompiler.flash.action.parser.script;
|
||||
|
||||
import com.jpexs.decompiler.flash.simpleparser.Variable;
|
||||
import com.jpexs.decompiler.flash.simpleparser.SimpleParseException;
|
||||
import com.jpexs.decompiler.flash.simpleparser.Type;
|
||||
import com.jpexs.decompiler.flash.simpleparser.Scope;
|
||||
import com.jpexs.decompiler.flash.simpleparser.CatchScope;
|
||||
import com.jpexs.decompiler.flash.simpleparser.ClassScope;
|
||||
import com.jpexs.decompiler.flash.simpleparser.VariableOrScope;
|
||||
import com.jpexs.decompiler.flash.simpleparser.FunctionScope;
|
||||
import com.jpexs.decompiler.flash.SWF;
|
||||
import com.jpexs.decompiler.flash.action.parser.ActionParseException;
|
||||
import com.jpexs.decompiler.flash.action.parser.script.ActionScriptLexer;
|
||||
import com.jpexs.decompiler.flash.action.parser.script.LexBufferer;
|
||||
import com.jpexs.decompiler.flash.action.parser.script.ParsedSymbol;
|
||||
import com.jpexs.decompiler.flash.action.parser.script.SymbolGroup;
|
||||
import com.jpexs.decompiler.flash.action.parser.script.SymbolType;
|
||||
import com.jpexs.decompiler.flash.simpleparser.SimpleParser;
|
||||
import com.jpexs.decompiler.flash.types.CLIPACTIONRECORD;
|
||||
import com.jpexs.decompiler.graph.GraphTargetItem;
|
||||
import com.jpexs.helpers.CancellableWorker;
|
||||
import com.jpexs.helpers.Reference;
|
||||
import java.io.IOException;
|
||||
import java.io.StringReader;
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.LinkedHashMap;
|
||||
@@ -40,25 +45,25 @@ import java.util.Map;
|
||||
*
|
||||
* @author JPEXS
|
||||
*/
|
||||
public class ActionScript2VariableParser {
|
||||
public class ActionScript2SimpleParser implements SimpleParser {
|
||||
|
||||
/**
|
||||
* Swf version
|
||||
*/
|
||||
private final int swfVersion;
|
||||
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param swf Swf
|
||||
*/
|
||||
public ActionScript2VariableParser(SWF swf) {
|
||||
public ActionScript2SimpleParser(SWF swf) {
|
||||
this.swfVersion = swf.version;
|
||||
}
|
||||
|
||||
private final boolean debugMode = false;
|
||||
|
||||
private void commands(List<ActionVariableParseException> errors, boolean inFunction, boolean inMethod, int forinlevel, boolean inTellTarget, List<VariableOrScope> variables, Reference<Boolean> hasEval) throws IOException, InterruptedException, ActionParseException {
|
||||
private void commands(List<SimpleParseException> errors, boolean inFunction, boolean inMethod, int forinlevel, boolean inTellTarget, List<VariableOrScope> variables, Reference<Boolean> hasEval) throws IOException, InterruptedException, SimpleParseException, ActionParseException {
|
||||
if (debugMode) {
|
||||
System.out.println("commands:");
|
||||
}
|
||||
@@ -70,7 +75,7 @@ public class ActionScript2VariableParser {
|
||||
}
|
||||
}
|
||||
|
||||
private String type(List<ActionVariableParseException> errors, boolean definition, List<VariableOrScope> variables) throws IOException, InterruptedException, ActionParseException {
|
||||
private String type(List<SimpleParseException> errors, boolean definition, List<VariableOrScope> variables) throws IOException, InterruptedException, SimpleParseException, ActionParseException {
|
||||
ParsedSymbol s = lex();
|
||||
if (!expectedIdentifier(errors, s, lexer.yyline())) {
|
||||
return null;
|
||||
@@ -96,7 +101,7 @@ public class ActionScript2VariableParser {
|
||||
return ret;
|
||||
}
|
||||
|
||||
private boolean expected(List<ActionVariableParseException> errors, ParsedSymbol symb, int line, Object... expected) throws IOException {
|
||||
private boolean expected(List<SimpleParseException> errors, ParsedSymbol symb, int line, Object... expected) throws IOException {
|
||||
boolean found = false;
|
||||
for (Object t : expected) {
|
||||
if (symb.type == t) {
|
||||
@@ -116,13 +121,13 @@ public class ActionScript2VariableParser {
|
||||
expStr += e;
|
||||
first = false;
|
||||
}
|
||||
errors.add(new ActionVariableParseException("" + expStr + " expected but " + symb.type + " found", line, symb.position));
|
||||
errors.add(new SimpleParseException("" + expStr + " expected but " + symb.type + " found", line, symb.position));
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private ParsedSymbol expectedType(List<ActionVariableParseException> errors, Object... type) throws IOException, InterruptedException, ActionParseException {
|
||||
private ParsedSymbol expectedType(List<SimpleParseException> errors, Object... type) throws IOException, InterruptedException, SimpleParseException, ActionParseException {
|
||||
ParsedSymbol symb = lex();
|
||||
if (!expected(errors, symb, lexer.yyline(), type)) {
|
||||
return null;
|
||||
@@ -130,7 +135,7 @@ public class ActionScript2VariableParser {
|
||||
return symb;
|
||||
}
|
||||
|
||||
private ParsedSymbol lex() throws IOException, InterruptedException, ActionParseException {
|
||||
private ParsedSymbol lex() throws IOException, InterruptedException, SimpleParseException, ActionParseException, ActionParseException {
|
||||
if (CancellableWorker.isInterrupted()) {
|
||||
throw new InterruptedException();
|
||||
}
|
||||
@@ -141,7 +146,7 @@ public class ActionScript2VariableParser {
|
||||
return ret;
|
||||
}
|
||||
|
||||
private List<GraphTargetItem> call(List<ActionVariableParseException> errors, boolean inFunction, boolean inMethod, boolean inTellTarget, List<VariableOrScope> variables, Reference<Boolean> hasEval) throws IOException, InterruptedException, ActionParseException {
|
||||
private List<GraphTargetItem> call(List<SimpleParseException> errors, boolean inFunction, boolean inMethod, boolean inTellTarget, List<VariableOrScope> variables, Reference<Boolean> hasEval) throws IOException, InterruptedException, SimpleParseException, ActionParseException {
|
||||
List<GraphTargetItem> ret = new ArrayList<>();
|
||||
ParsedSymbol s = lex();
|
||||
while (s.type != SymbolType.PARENT_CLOSE) {
|
||||
@@ -155,7 +160,7 @@ public class ActionScript2VariableParser {
|
||||
return ret;
|
||||
}
|
||||
|
||||
private void function(List<ActionVariableParseException> errors, boolean withBody, String functionName, int functionNamePosition, boolean isMethod, List<VariableOrScope> variables, boolean inTellTarget, Reference<Boolean> hasEval) throws IOException, InterruptedException, ActionParseException {
|
||||
private void function(List<SimpleParseException> errors, boolean withBody, String functionName, int functionNamePosition, boolean isMethod, List<VariableOrScope> variables, boolean inTellTarget, Reference<Boolean> hasEval) throws IOException, InterruptedException, SimpleParseException, ActionParseException {
|
||||
ParsedSymbol s;
|
||||
expectedType(errors, SymbolType.PARENT_OPEN);
|
||||
s = lex();
|
||||
@@ -205,7 +210,7 @@ public class ActionScript2VariableParser {
|
||||
variables.add(new FunctionScope(subvariables));
|
||||
}
|
||||
|
||||
private boolean traits(List<ActionVariableParseException> errors, boolean isInterface, String className, List<VariableOrScope> variables, boolean inTellTarget, Reference<Boolean> hasEval) throws IOException, InterruptedException, ActionParseException {
|
||||
private boolean traits(List<SimpleParseException> errors, boolean isInterface, String className, List<VariableOrScope> variables, boolean inTellTarget, Reference<Boolean> hasEval) throws IOException, InterruptedException, SimpleParseException, ActionParseException {
|
||||
|
||||
ParsedSymbol s;
|
||||
|
||||
@@ -263,7 +268,7 @@ public class ActionScript2VariableParser {
|
||||
return true;
|
||||
}
|
||||
|
||||
private boolean expressionCommands(List<ActionVariableParseException> errors, ParsedSymbol s, boolean inFunction, boolean inMethod, boolean inTellTarget, List<VariableOrScope> variables, Reference<Boolean> hasEval) throws IOException, InterruptedException, ActionParseException {
|
||||
private boolean expressionCommands(List<SimpleParseException> errors, ParsedSymbol s, boolean inFunction, boolean inMethod, boolean inTellTarget, List<VariableOrScope> variables, Reference<Boolean> hasEval) throws IOException, InterruptedException, SimpleParseException, ActionParseException {
|
||||
if (debugMode) {
|
||||
System.out.println("expressionCommands:");
|
||||
}
|
||||
@@ -383,7 +388,7 @@ public class ActionScript2VariableParser {
|
||||
} else if (s.value.equals("POST")) {
|
||||
//empty
|
||||
} else {
|
||||
errors.add(new ActionVariableParseException("Invalid method, \"GET\" or \"POST\" expected.", lexer.yyline(), s.position));
|
||||
errors.add(new SimpleParseException("Invalid method, \"GET\" or \"POST\" expected.", lexer.yyline(), s.position));
|
||||
}
|
||||
} else {
|
||||
lexer.pushback(s);
|
||||
@@ -481,7 +486,7 @@ public class ActionScript2VariableParser {
|
||||
} else if (s.value.equals("GET")) {
|
||||
//empty
|
||||
} else {
|
||||
errors.add(new ActionVariableParseException("Invalid method, \"GET\" or \"POST\" expected.", lexer.yyline(), s.position));
|
||||
errors.add(new SimpleParseException("Invalid method, \"GET\" or \"POST\" expected.", lexer.yyline(), s.position));
|
||||
}
|
||||
} else {
|
||||
lexer.pushback(s);
|
||||
@@ -674,20 +679,20 @@ public class ActionScript2VariableParser {
|
||||
SymbolType.NUMBER_OP, SymbolType.STRING_OP);
|
||||
}
|
||||
|
||||
private boolean expectedIdentifier(List<ActionVariableParseException> errors, ParsedSymbol s, int line, Object... exceptions) throws IOException {
|
||||
private boolean expectedIdentifier(List<SimpleParseException> errors, ParsedSymbol s, int line, Object... exceptions) throws IOException {
|
||||
for (Object ex : exceptions) {
|
||||
if (s.isType(ex)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
if (!isIdentifier(s)) {
|
||||
errors.add(new ActionVariableParseException(SymbolType.IDENTIFIER + " expected but " + s.type + " found", line, s.position));
|
||||
errors.add(new SimpleParseException(SymbolType.IDENTIFIER + " expected but " + s.type + " found", line, s.position));
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private boolean command(List<ActionVariableParseException> errors, boolean inFunction, boolean inMethod, int forinlevel, boolean inTellTarget, List<VariableOrScope> variables, Reference<Boolean> hasEval) throws IOException, InterruptedException, ActionParseException {
|
||||
private boolean command(List<SimpleParseException> errors, boolean inFunction, boolean inMethod, int forinlevel, boolean inTellTarget, List<VariableOrScope> variables, Reference<Boolean> hasEval) throws IOException, InterruptedException, SimpleParseException, ActionParseException {
|
||||
LexBufferer buf = new LexBufferer();
|
||||
lexer.addListener(buf);
|
||||
if (debugMode) {
|
||||
@@ -791,7 +796,7 @@ public class ActionScript2VariableParser {
|
||||
break;
|
||||
case FUNCTION:
|
||||
s = lexer.lex();
|
||||
if (expectedIdentifier(errors, s, lexer.yyline())) {
|
||||
if (expectedIdentifier(errors, s, lexer.yyline())) {
|
||||
function(errors, true, s.value.toString(), s.position, false, variables, inTellTarget, hasEval);
|
||||
}
|
||||
break;
|
||||
@@ -1004,7 +1009,7 @@ public class ActionScript2VariableParser {
|
||||
ret = true;
|
||||
break;
|
||||
default:
|
||||
errors.add(new ActionVariableParseException("Unknown directive: #" + s.value, lexer.yyline(), s.position));
|
||||
errors.add(new SimpleParseException("Unknown directive: #" + s.value, lexer.yyline(), s.position));
|
||||
}
|
||||
break;
|
||||
default:
|
||||
@@ -1023,11 +1028,11 @@ public class ActionScript2VariableParser {
|
||||
if ((s != null) && (s.type != SymbolType.SEMICOLON)) {
|
||||
lexer.pushback(s);
|
||||
}
|
||||
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
private boolean expression(List<ActionVariableParseException> errors, boolean inFunction, boolean inMethod, boolean inTellTarget, boolean allowRemainder, List<VariableOrScope> variables, boolean allowComma, Reference<Boolean> hasEval) throws IOException, InterruptedException, ActionParseException {
|
||||
private boolean expression(List<SimpleParseException> errors, boolean inFunction, boolean inMethod, boolean inTellTarget, boolean allowRemainder, List<VariableOrScope> variables, boolean allowComma, Reference<Boolean> hasEval) throws IOException, InterruptedException, SimpleParseException, ActionParseException {
|
||||
if (debugMode) {
|
||||
System.out.println("expression:");
|
||||
}
|
||||
@@ -1049,7 +1054,7 @@ public class ActionScript2VariableParser {
|
||||
return true;
|
||||
}
|
||||
|
||||
private ParsedSymbol peekLex() throws IOException, InterruptedException, ActionParseException {
|
||||
private ParsedSymbol peekLex() throws IOException, InterruptedException, SimpleParseException, ActionParseException {
|
||||
ParsedSymbol lookahead = lex();
|
||||
lexer.pushback(lookahead);
|
||||
return lookahead;
|
||||
@@ -1082,7 +1087,7 @@ public class ActionScript2VariableParser {
|
||||
return s.type.getPrecedence();
|
||||
}
|
||||
|
||||
private boolean expression1(List<ActionVariableParseException> errors, boolean lhs, int min_precedence, boolean inFunction, boolean inMethod, boolean inTellTarget, boolean allowRemainder, List<VariableOrScope> variables, Reference<Boolean> hasEval) throws IOException, InterruptedException, ActionParseException {
|
||||
private boolean expression1(List<SimpleParseException> errors, boolean lhs, int min_precedence, boolean inFunction, boolean inMethod, boolean inTellTarget, boolean allowRemainder, List<VariableOrScope> variables, Reference<Boolean> hasEval) throws IOException, InterruptedException, SimpleParseException, ActionParseException {
|
||||
ParsedSymbol op;
|
||||
boolean rhs;
|
||||
ParsedSymbol lookahead = peekLex();
|
||||
@@ -1185,7 +1190,7 @@ public class ActionScript2VariableParser {
|
||||
return lhs;
|
||||
}
|
||||
|
||||
private int brackets(List<ActionVariableParseException> errors, boolean inFunction, boolean inMethod, boolean inTellTarget, List<VariableOrScope> variables, Reference<Boolean> hasEval) throws IOException, InterruptedException, ActionParseException {
|
||||
private int brackets(List<SimpleParseException> errors, boolean inFunction, boolean inMethod, boolean inTellTarget, List<VariableOrScope> variables, Reference<Boolean> hasEval) throws IOException, InterruptedException, SimpleParseException, ActionParseException {
|
||||
ParsedSymbol s = lex();
|
||||
int arrCnt = 0;
|
||||
if (s.type == SymbolType.BRACKET_OPEN) {
|
||||
@@ -1209,7 +1214,7 @@ public class ActionScript2VariableParser {
|
||||
return arrCnt;
|
||||
}
|
||||
|
||||
private boolean handleVariable(List<ActionVariableParseException> errors, ParsedSymbol s, boolean ret, List<VariableOrScope> variables, Reference<Boolean> allowMemberOrCall, boolean inFunction, boolean inMethod, boolean inTellTarget, Reference<Boolean> hasEval) throws IOException, InterruptedException, ActionParseException {
|
||||
private boolean handleVariable(List<SimpleParseException> errors, ParsedSymbol s, boolean ret, List<VariableOrScope> variables, Reference<Boolean> allowMemberOrCall, boolean inFunction, boolean inMethod, boolean inTellTarget, Reference<Boolean> hasEval) throws IOException, InterruptedException, SimpleParseException, ActionParseException {
|
||||
if (s.value.equals("not")) {
|
||||
expressionPrimary(errors, inFunction, inMethod, inTellTarget, false, variables, true, hasEval);
|
||||
ret = true;
|
||||
@@ -1256,7 +1261,7 @@ public class ActionScript2VariableParser {
|
||||
return ret;
|
||||
}
|
||||
|
||||
private boolean expressionPrimary(List<ActionVariableParseException> errors, boolean inFunction, boolean inMethod, boolean inTellTarget, boolean allowRemainder, List<VariableOrScope> variables, boolean allowCall, Reference<Boolean> hasEval) throws IOException, InterruptedException, ActionParseException {
|
||||
private boolean expressionPrimary(List<SimpleParseException> errors, boolean inFunction, boolean inMethod, boolean inTellTarget, boolean allowRemainder, List<VariableOrScope> variables, boolean allowCall, Reference<Boolean> hasEval) throws IOException, InterruptedException, SimpleParseException, ActionParseException {
|
||||
if (debugMode) {
|
||||
System.out.println("primary:");
|
||||
}
|
||||
@@ -1303,7 +1308,7 @@ public class ActionScript2VariableParser {
|
||||
//errors.add(new ActionVariableParseException("Compiling §§" + s.value + " is not available, sorry", lexer.yyline()));
|
||||
break;
|
||||
default:
|
||||
errors.add(new ActionVariableParseException("Unknown preprocessor instruction: §§" + s.value, lexer.yyline(), s.position));
|
||||
errors.add(new SimpleParseException("Unknown preprocessor instruction: §§" + s.value, lexer.yyline(), s.position));
|
||||
|
||||
}
|
||||
expectedType(errors, SymbolType.PARENT_CLOSE);
|
||||
@@ -1415,7 +1420,7 @@ public class ActionScript2VariableParser {
|
||||
case PARENT_OPEN:
|
||||
boolean pexpr = expression(errors, inFunction, inMethod, inTellTarget, true, variables, true, hasEval);
|
||||
if (!pexpr) {
|
||||
errors.add(new ActionVariableParseException("Expression expected", lexer.yyline(), s.position));
|
||||
errors.add(new SimpleParseException("Expression expected", lexer.yyline(), s.position));
|
||||
}
|
||||
expectedType(errors, SymbolType.PARENT_CLOSE);
|
||||
allowMemberOrCall = true;
|
||||
@@ -1490,7 +1495,7 @@ public class ActionScript2VariableParser {
|
||||
return ret;
|
||||
}
|
||||
|
||||
private boolean memberOrCall(List<ActionVariableParseException> errors, boolean ret, boolean inFunction, boolean inMethod, boolean inTellTarget, List<VariableOrScope> variables, boolean allowCall, Reference<Boolean> hasEval) throws IOException, InterruptedException, ActionParseException {
|
||||
private boolean memberOrCall(List<SimpleParseException> errors, boolean ret, boolean inFunction, boolean inMethod, boolean inTellTarget, List<VariableOrScope> variables, boolean allowCall, Reference<Boolean> hasEval) throws IOException, InterruptedException, SimpleParseException, ActionParseException {
|
||||
ParsedSymbol op = lex();
|
||||
while (op.isType(SymbolType.PARENT_OPEN, SymbolType.BRACKET_OPEN, SymbolType.DOT)) {
|
||||
if (op.type == SymbolType.PARENT_OPEN) {
|
||||
@@ -1531,108 +1536,106 @@ public class ActionScript2VariableParser {
|
||||
|
||||
private ActionScriptLexer lexer = null;
|
||||
|
||||
/**
|
||||
* Convert a string to a high-level model.
|
||||
*
|
||||
* @param str The string to convert
|
||||
* @throws ActionParseException On parse error
|
||||
* @throws IOException On I/O error
|
||||
* @throws InterruptedException On interrupt
|
||||
*/
|
||||
|
||||
@Override
|
||||
public void parse(
|
||||
String str,
|
||||
String str,
|
||||
Map<Integer, List<Integer>> definitionPosToReferences,
|
||||
Map<Integer, Integer> referenceToDefinition,
|
||||
List<ActionVariableParseException> errors
|
||||
) throws ActionParseException, IOException, InterruptedException {
|
||||
lexer = new ActionScriptLexer(new StringReader(str));
|
||||
if (swfVersion >= ActionScriptLexer.SWF_VERSION_CASE_SENSITIVE) {
|
||||
lexer.setCaseSensitiveIdentifiers(true);
|
||||
}
|
||||
|
||||
ParsedSymbol symb = lexer.lex();
|
||||
boolean inOnHandler = false;
|
||||
|
||||
if (symb.type == SymbolType.IDENTIFIER && ("on".equals(symb.value) || "onClipEvent".equals(symb.value))) {
|
||||
expectedType(errors, SymbolType.PARENT_OPEN);
|
||||
symb = lexer.lex();
|
||||
boolean condEmpty = true;
|
||||
while (symb.type == SymbolType.IDENTIFIER) {
|
||||
condEmpty = false;
|
||||
switch ((String) symb.value) {
|
||||
case "press":
|
||||
break;
|
||||
case "release":
|
||||
break;
|
||||
case "releaseOutside":
|
||||
break;
|
||||
case "rollOver":
|
||||
break;
|
||||
case "rollOut":
|
||||
break;
|
||||
case "dragOut":
|
||||
break;
|
||||
case "dragOver":
|
||||
break;
|
||||
case "keyPress":
|
||||
symb = lexer.lex();
|
||||
expected(errors, symb, lexer.yyline(), SymbolType.STRING);
|
||||
Integer key = CLIPACTIONRECORD.stringToKey((String) symb.value);
|
||||
if (key == null) {
|
||||
errors.add(new ActionVariableParseException("Invalid key", lexer.yyline(), symb.position));
|
||||
}
|
||||
break;
|
||||
case "keyUp":
|
||||
break;
|
||||
case "keyDown":
|
||||
break;
|
||||
case "mouseUp":
|
||||
break;
|
||||
case "mouseDown":
|
||||
break;
|
||||
case "mouseMove":
|
||||
break;
|
||||
case "unload":
|
||||
break;
|
||||
case "enterFrame":
|
||||
break;
|
||||
case "load":
|
||||
break;
|
||||
case "data":
|
||||
break;
|
||||
default:
|
||||
errors.add(new ActionVariableParseException("Unrecognized event type", lexer.yyline(), symb.position));
|
||||
}
|
||||
symb = lexer.lex();
|
||||
if (symb.type == SymbolType.PARENT_CLOSE) {
|
||||
break;
|
||||
}
|
||||
expected(errors, symb, lexer.yyline(), SymbolType.COMMA);
|
||||
symb = lexer.lex();
|
||||
List<SimpleParseException> errors
|
||||
) throws SimpleParseException, IOException, InterruptedException {
|
||||
try {
|
||||
lexer = new ActionScriptLexer(new StringReader(str));
|
||||
if (swfVersion >= ActionScriptLexer.SWF_VERSION_CASE_SENSITIVE) {
|
||||
lexer.setCaseSensitiveIdentifiers(true);
|
||||
}
|
||||
expected(errors, symb, lexer.yyline(), SymbolType.PARENT_CLOSE);
|
||||
if (condEmpty) {
|
||||
errors.add(new ActionVariableParseException("condition must be non empty", lexer.yyline(), symb.position));
|
||||
|
||||
ParsedSymbol symb = lexer.lex();
|
||||
boolean inOnHandler = false;
|
||||
|
||||
if (symb.type == SymbolType.IDENTIFIER && ("on".equals(symb.value) || "onClipEvent".equals(symb.value))) {
|
||||
expectedType(errors, SymbolType.PARENT_OPEN);
|
||||
symb = lexer.lex();
|
||||
boolean condEmpty = true;
|
||||
while (symb.type == SymbolType.IDENTIFIER) {
|
||||
condEmpty = false;
|
||||
switch ((String) symb.value) {
|
||||
case "press":
|
||||
break;
|
||||
case "release":
|
||||
break;
|
||||
case "releaseOutside":
|
||||
break;
|
||||
case "rollOver":
|
||||
break;
|
||||
case "rollOut":
|
||||
break;
|
||||
case "dragOut":
|
||||
break;
|
||||
case "dragOver":
|
||||
break;
|
||||
case "keyPress":
|
||||
symb = lexer.lex();
|
||||
expected(errors, symb, lexer.yyline(), SymbolType.STRING);
|
||||
Integer key = CLIPACTIONRECORD.stringToKey((String) symb.value);
|
||||
if (key == null) {
|
||||
errors.add(new SimpleParseException("Invalid key", lexer.yyline(), symb.position));
|
||||
}
|
||||
break;
|
||||
case "keyUp":
|
||||
break;
|
||||
case "keyDown":
|
||||
break;
|
||||
case "mouseUp":
|
||||
break;
|
||||
case "mouseDown":
|
||||
break;
|
||||
case "mouseMove":
|
||||
break;
|
||||
case "unload":
|
||||
break;
|
||||
case "enterFrame":
|
||||
break;
|
||||
case "load":
|
||||
break;
|
||||
case "data":
|
||||
break;
|
||||
default:
|
||||
errors.add(new SimpleParseException("Unrecognized event type", lexer.yyline(), symb.position));
|
||||
}
|
||||
symb = lexer.lex();
|
||||
if (symb.type == SymbolType.PARENT_CLOSE) {
|
||||
break;
|
||||
}
|
||||
expected(errors, symb, lexer.yyline(), SymbolType.COMMA);
|
||||
symb = lexer.lex();
|
||||
}
|
||||
expected(errors, symb, lexer.yyline(), SymbolType.PARENT_CLOSE);
|
||||
if (condEmpty) {
|
||||
errors.add(new SimpleParseException("condition must be non empty", lexer.yyline(), symb.position));
|
||||
}
|
||||
expectedType(errors, SymbolType.CURLY_OPEN);
|
||||
inOnHandler = true;
|
||||
} else {
|
||||
lexer.pushback(symb);
|
||||
}
|
||||
expectedType(errors, SymbolType.CURLY_OPEN);
|
||||
inOnHandler = true;
|
||||
} else {
|
||||
lexer.pushback(symb);
|
||||
}
|
||||
|
||||
List<VariableOrScope> vars = new ArrayList<>();
|
||||
Reference<Boolean> hasEval = new Reference<>(false);
|
||||
commands(errors, false, false, 0, false, vars, hasEval);
|
||||
Map<String, Integer> varNameToDefinitionPosition = new LinkedHashMap<>();
|
||||
List<VariableOrScope> vars = new ArrayList<>();
|
||||
Reference<Boolean> hasEval = new Reference<>(false);
|
||||
commands(errors, false, false, 0, false, vars, hasEval);
|
||||
Map<String, Integer> varNameToDefinitionPosition = new LinkedHashMap<>();
|
||||
|
||||
parseVariablesList(new ArrayList<>(), vars, definitionPosToReferences, referenceToDefinition, varNameToDefinitionPosition);
|
||||
parseVariablesList(new ArrayList<>(), vars, definitionPosToReferences, referenceToDefinition, varNameToDefinitionPosition);
|
||||
|
||||
if (inOnHandler) {
|
||||
expectedType(errors, SymbolType.CURLY_CLOSE);
|
||||
}
|
||||
if (inOnHandler) {
|
||||
expectedType(errors, SymbolType.CURLY_CLOSE);
|
||||
}
|
||||
|
||||
if (lexer.lex().type != SymbolType.EOF) {
|
||||
errors.add(new ActionVariableParseException("Parsing finished before end of the file", lexer.yyline(), lexer.yychar()));
|
||||
if (lexer.lex().type != SymbolType.EOF) {
|
||||
errors.add(new SimpleParseException("Parsing finished before end of the file", lexer.yyline(), lexer.yychar()));
|
||||
}
|
||||
} catch (ActionParseException ex) {
|
||||
errors.add(new SimpleParseException(ex.getMessage(), ex.line, ex.position));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1699,19 +1702,19 @@ public class ActionScript2VariableParser {
|
||||
}
|
||||
}
|
||||
|
||||
private void versionRequired(List<ActionVariableParseException> errors, ParsedSymbol s, int min) throws ActionParseException {
|
||||
private void versionRequired(List<SimpleParseException> errors, ParsedSymbol s, int min) throws SimpleParseException {
|
||||
versionRequired(errors, s.value.toString(), min, Integer.MAX_VALUE, s.position);
|
||||
}
|
||||
|
||||
private void versionRequired(List<ActionVariableParseException> errors, String type, int min, int max, long position) throws ActionParseException {
|
||||
private void versionRequired(List<SimpleParseException> errors, String type, int min, int max, long position) throws SimpleParseException {
|
||||
if (min == max && swfVersion != min) {
|
||||
errors.add(new ActionVariableParseException(type + " requires SWF version " + min, lexer.yyline(), position));
|
||||
errors.add(new SimpleParseException(type + " requires SWF version " + min, lexer.yyline(), position));
|
||||
}
|
||||
if (swfVersion < min) {
|
||||
errors.add(new ActionVariableParseException(type + " requires at least SWF version " + min, lexer.yyline(), position));
|
||||
errors.add(new SimpleParseException(type + " requires at least SWF version " + min, lexer.yyline(), position));
|
||||
}
|
||||
if (swfVersion > max) {
|
||||
errors.add(new ActionVariableParseException(type + " requires SWF version lower than " + max, lexer.yyline(), position));
|
||||
errors.add(new SimpleParseException(type + " requires SWF version lower than " + max, lexer.yyline(), position));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -14,7 +14,7 @@
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library.
|
||||
*/
|
||||
package com.jpexs.decompiler.flash.action.parser.script.variables;
|
||||
package com.jpexs.decompiler.flash.simpleparser;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -14,7 +14,7 @@
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library.
|
||||
*/
|
||||
package com.jpexs.decompiler.flash.action.parser.script.variables;
|
||||
package com.jpexs.decompiler.flash.simpleparser;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -14,7 +14,7 @@
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library.
|
||||
*/
|
||||
package com.jpexs.decompiler.flash.action.parser.script.variables;
|
||||
package com.jpexs.decompiler.flash.simpleparser;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -14,7 +14,7 @@
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library.
|
||||
*/
|
||||
package com.jpexs.decompiler.flash.action.parser.script.variables;
|
||||
package com.jpexs.decompiler.flash.simpleparser;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -14,23 +14,23 @@
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library.
|
||||
*/
|
||||
package com.jpexs.decompiler.flash.action.parser.script.variables;
|
||||
package com.jpexs.decompiler.flash.simpleparser;
|
||||
|
||||
import com.jpexs.decompiler.flash.ParseException;
|
||||
|
||||
/**
|
||||
* Exception for action parsing errors
|
||||
* Exception for Simple parsing errors
|
||||
*
|
||||
* @author JPEXS
|
||||
*/
|
||||
public class ActionVariableParseException extends ParseException {
|
||||
public class SimpleParseException extends ParseException {
|
||||
|
||||
/**
|
||||
* Constructs a new parse exception.
|
||||
* @param text Text of the exception
|
||||
* @param line Line number where the exception occurred
|
||||
*/
|
||||
public ActionVariableParseException(String text, long line) {
|
||||
public SimpleParseException(String text, long line) {
|
||||
super(text, line);
|
||||
}
|
||||
|
||||
@@ -40,7 +40,7 @@ public class ActionVariableParseException extends ParseException {
|
||||
* @param line Line number where the exception occurred
|
||||
* @param position Position where the exception occured
|
||||
*/
|
||||
public ActionVariableParseException(String text, long line, long position) {
|
||||
public SimpleParseException(String text, long line, long position) {
|
||||
super(text, line, position);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
/*
|
||||
* Copyright (C) 2010-2025 JPEXS, All rights reserved.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 3.0 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library.
|
||||
*/
|
||||
package com.jpexs.decompiler.flash.simpleparser;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author JPEXS
|
||||
*/
|
||||
public interface SimpleParser {
|
||||
|
||||
/**
|
||||
* Parses document.
|
||||
*
|
||||
* @param str The string to convert
|
||||
* @param definitionPosToReferences Definition position to references
|
||||
* @param referenceToDefinition Reference to definition
|
||||
* @param errors Errors
|
||||
* @throws SimpleParseException On parse error
|
||||
* @throws IOException On I/O error
|
||||
* @throws InterruptedException On interrupt
|
||||
*/
|
||||
public void parse(
|
||||
String str,
|
||||
Map<Integer, List<Integer>> definitionPosToReferences,
|
||||
Map<Integer, Integer> referenceToDefinition,
|
||||
List<SimpleParseException> errors
|
||||
) throws SimpleParseException, IOException, InterruptedException;
|
||||
}
|
||||
@@ -14,7 +14,7 @@
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library.
|
||||
*/
|
||||
package com.jpexs.decompiler.flash.action.parser.script.variables;
|
||||
package com.jpexs.decompiler.flash.simpleparser;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -14,7 +14,7 @@
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library.
|
||||
*/
|
||||
package com.jpexs.decompiler.flash.action.parser.script.variables;
|
||||
package com.jpexs.decompiler.flash.simpleparser;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -14,7 +14,7 @@
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library.
|
||||
*/
|
||||
package com.jpexs.decompiler.flash.action.parser.script.variables;
|
||||
package com.jpexs.decompiler.flash.simpleparser;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -27,6 +27,7 @@ import com.jpexs.decompiler.flash.abc.ScriptPack;
|
||||
import com.jpexs.decompiler.flash.abc.avm2.AVM2Code;
|
||||
import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
|
||||
import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instructions;
|
||||
import com.jpexs.decompiler.flash.abc.avm2.parser.script.ActionScript3SimpleParser;
|
||||
import com.jpexs.decompiler.flash.abc.types.ABCException;
|
||||
import com.jpexs.decompiler.flash.abc.types.MethodBody;
|
||||
import com.jpexs.decompiler.flash.abc.types.MethodInfo;
|
||||
@@ -65,6 +66,7 @@ import com.jpexs.decompiler.flash.gui.View;
|
||||
import com.jpexs.decompiler.flash.gui.ViewMessages;
|
||||
import com.jpexs.decompiler.flash.gui.controls.JPersistentSplitPane;
|
||||
import com.jpexs.decompiler.flash.gui.editor.LinkHandler;
|
||||
import com.jpexs.decompiler.flash.gui.editor.VariableMarker;
|
||||
import com.jpexs.decompiler.flash.gui.tagtree.AbstractTagTree;
|
||||
import com.jpexs.decompiler.flash.gui.tagtree.AbstractTagTreeModel;
|
||||
import com.jpexs.decompiler.flash.helpers.GraphTextWriter;
|
||||
@@ -140,6 +142,7 @@ import javax.swing.event.TreeModelEvent;
|
||||
import javax.swing.event.TreeModelListener;
|
||||
import javax.swing.text.Highlighter;
|
||||
import javax.swing.tree.TreePath;
|
||||
import jsyntaxpane.DefaultSyntaxKit;
|
||||
import jsyntaxpane.Token;
|
||||
import jsyntaxpane.TokenType;
|
||||
|
||||
@@ -249,6 +252,7 @@ public class ABCPanel extends JPanel implements ItemListener, SearchListener<Scr
|
||||
libraryComboBox.setSelectedIndex(SWF.LIBRARY_FLASH);
|
||||
}
|
||||
this.abc = abc;
|
||||
decompiledTextArea.setParser(new ActionScript3SimpleParser(abc));
|
||||
setDecompiledEditMode(false);
|
||||
navigator.setAbc(abc);
|
||||
updateLinksLabel();
|
||||
@@ -993,8 +997,8 @@ public class ABCPanel extends JPanel implements ItemListener, SearchListener<Scr
|
||||
popupMenu.add(simplifyExpressionsMenuItem);
|
||||
//popupMenu.add(removeObfuscatedDeclarationsMenuItem);
|
||||
|
||||
return popupMenu;
|
||||
}
|
||||
return popupMenu;
|
||||
}
|
||||
};
|
||||
deobfuscateOptionsButton.setToolTipText(AppStrings.translate("button.deobfuscate_options"));
|
||||
deobfuscateOptionsButton.setMargin(new Insets(0, 0, 0, 0));
|
||||
@@ -1021,7 +1025,7 @@ public class ABCPanel extends JPanel implements ItemListener, SearchListener<Scr
|
||||
JPanel libraryAndLinkPanel = new JPanel(new FlowLayout());
|
||||
|
||||
JToggleButton linkButton = new JToggleButton(View.getIcon("link16"));
|
||||
|
||||
|
||||
LinkDialog linkDialog = new LinkDialog(mainPanel, linkButton);
|
||||
|
||||
libraryComboBox = new JComboBox<>();
|
||||
@@ -1047,8 +1051,8 @@ public class ABCPanel extends JPanel implements ItemListener, SearchListener<Scr
|
||||
|
||||
libraryAndLinkPanel.add(linksLabel);
|
||||
|
||||
linkButton.setToolTipText(AppStrings.translate("button.abc.linkedSwfs.hint"));
|
||||
|
||||
linkButton.setToolTipText(AppStrings.translate("button.abc.linkedSwfs.hint"));
|
||||
|
||||
linkDialog.addSaveListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
@@ -1153,6 +1157,8 @@ public class ABCPanel extends JPanel implements ItemListener, SearchListener<Scr
|
||||
//decLabel.setBorder(new BevelBorder(BevelBorder.RAISED));
|
||||
|
||||
decompiledTextArea.changeContentType("text/actionscript3");
|
||||
DefaultSyntaxKit kit = (DefaultSyntaxKit) decompiledTextArea.getEditorKit();
|
||||
kit.installComponent(decompiledTextArea, VariableMarker.class.getName());
|
||||
decompiledTextArea.setFont(Configuration.getSourceFont());
|
||||
|
||||
View.addEditorAction(decompiledTextArea, new AbstractAction() {
|
||||
@@ -1757,7 +1763,7 @@ public class ABCPanel extends JPanel implements ItemListener, SearchListener<Scr
|
||||
TreeItem sel = mainPanel.getCurrentTree().getCurrentTreeItem();
|
||||
if ((sel instanceof ScriptPack) && (sel != pack)) {
|
||||
mainPanel.replaceItemPin(pack, sel);
|
||||
}
|
||||
}
|
||||
}
|
||||
reload();
|
||||
mainPanel.clearEditingStatus();
|
||||
@@ -1819,7 +1825,7 @@ public class ABCPanel extends JPanel implements ItemListener, SearchListener<Scr
|
||||
} else {
|
||||
toggleButton.setSelected(Configuration.autoDeobfuscate.get());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void simplifyExpressionsMenuItemActionPerformed(ActionEvent evt) {
|
||||
JCheckBoxMenuItem menuItem = (JCheckBoxMenuItem) evt.getSource();
|
||||
@@ -2110,13 +2116,13 @@ public class ABCPanel extends JPanel implements ItemListener, SearchListener<Scr
|
||||
flexLabel.setVisible(useFlex && !value);
|
||||
editDecompiledButton.setEnabled(!value);
|
||||
}
|
||||
|
||||
|
||||
public void setScript(ScriptPack scriptPack) {
|
||||
setDecompiledEditMode(false);
|
||||
detailPanel.setEditMode(false);
|
||||
detailPanel.setEditMode(false);
|
||||
detailPanel.methodTraitPanel.methodCodePanel.clear();
|
||||
decompiledTextArea.setNoTrait();
|
||||
decompiledTextArea.setNoTrait();
|
||||
setAbc(scriptPack.abc);
|
||||
decompiledTextArea.setScript(scriptPack, true);
|
||||
decompiledTextArea.setScript(scriptPack, true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,8 +60,6 @@ import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import javax.swing.event.CaretEvent;
|
||||
import javax.swing.event.CaretListener;
|
||||
import javax.swing.text.BadLocationException;
|
||||
import javax.swing.text.Document;
|
||||
import jsyntaxpane.SyntaxDocument;
|
||||
import jsyntaxpane.Token;
|
||||
import jsyntaxpane.TokenType;
|
||||
@@ -101,8 +99,8 @@ public class DecompiledEditorPane extends DebuggableEditorPane implements CaretL
|
||||
|
||||
public synchronized boolean isScriptLoaded() {
|
||||
return scriptLoaded;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void addScriptListener(Runnable l) {
|
||||
scriptListeners.add(l);
|
||||
}
|
||||
@@ -882,18 +880,17 @@ public class DecompiledEditorPane extends DebuggableEditorPane implements CaretL
|
||||
|
||||
public void setScript(ScriptPack scriptLeaf, boolean force) {
|
||||
View.checkAccess();
|
||||
|
||||
|
||||
if (setSourceWorker != null) {
|
||||
setSourceWorker.cancel(true);
|
||||
setSourceWorker = null;
|
||||
}
|
||||
|
||||
|
||||
synchronized (this) {
|
||||
scriptLoaded = false;
|
||||
}
|
||||
|
||||
|
||||
if (!force && this.script == scriptLeaf) {
|
||||
if (!force && this.script == scriptLeaf) {
|
||||
synchronized (this) {
|
||||
scriptLoaded = true;
|
||||
}
|
||||
@@ -1004,8 +1001,6 @@ public class DecompiledEditorPane extends DebuggableEditorPane implements CaretL
|
||||
abcPanel.brokenHintPanel.setVisible(false);
|
||||
}
|
||||
setText(hilightedCode);
|
||||
|
||||
|
||||
|
||||
if (highlightedText.getClassHighlights().size() > 0) {
|
||||
try {
|
||||
@@ -1018,7 +1013,7 @@ public class DecompiledEditorPane extends DebuggableEditorPane implements CaretL
|
||||
}
|
||||
}
|
||||
|
||||
scriptLoaded = true;
|
||||
scriptLoaded = true;
|
||||
|
||||
fireScript();
|
||||
}
|
||||
@@ -1079,9 +1074,9 @@ public class DecompiledEditorPane extends DebuggableEditorPane implements CaretL
|
||||
}
|
||||
setCaretPosition(position);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public synchronized void setCaretPosition(int position) {
|
||||
super.setCaretPosition(position);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,9 +16,11 @@
|
||||
*/
|
||||
package com.jpexs.decompiler.flash.gui.action;
|
||||
|
||||
import com.jpexs.decompiler.flash.gui.editor.VariableMarker;
|
||||
import com.jpexs.decompiler.flash.DisassemblyListener;
|
||||
import com.jpexs.decompiler.flash.SWF;
|
||||
import com.jpexs.decompiler.flash.ValueTooLargeException;
|
||||
import com.jpexs.decompiler.flash.abc.avm2.parser.script.ActionScript3SimpleParser;
|
||||
import com.jpexs.decompiler.flash.action.Action;
|
||||
import com.jpexs.decompiler.flash.action.ActionGraph;
|
||||
import com.jpexs.decompiler.flash.action.ActionList;
|
||||
@@ -29,6 +31,7 @@ import com.jpexs.decompiler.flash.action.parser.pcode.ASMParsedSymbol;
|
||||
import com.jpexs.decompiler.flash.action.parser.pcode.ASMParser;
|
||||
import com.jpexs.decompiler.flash.action.parser.pcode.FlasmLexer;
|
||||
import com.jpexs.decompiler.flash.action.parser.script.ActionScript2Parser;
|
||||
import com.jpexs.decompiler.flash.action.parser.script.ActionScript2SimpleParser;
|
||||
import com.jpexs.decompiler.flash.action.parser.script.ActionScriptLexer;
|
||||
import com.jpexs.decompiler.flash.action.parser.script.ParsedSymbol;
|
||||
import com.jpexs.decompiler.flash.action.parser.script.SymbolType;
|
||||
@@ -637,7 +640,7 @@ public class ActionPanel extends JPanel implements SearchListener<ScriptSearchRe
|
||||
|
||||
editor.setShowMarkers(true);
|
||||
decompiledEditor.setShowMarkers(Configuration.decompile.get());
|
||||
decompiledEditor.setSwf(asm.getSwf());
|
||||
decompiledEditor.setParser(new ActionScript2SimpleParser(asm.getSwf()));
|
||||
lastASM = asm;
|
||||
lastCode = actions;
|
||||
lastDecompiled = decompiledText;
|
||||
@@ -1033,7 +1036,7 @@ public class ActionPanel extends JPanel implements SearchListener<ScriptSearchRe
|
||||
decompiledEditor.setFont(Configuration.getSourceFont());
|
||||
decompiledEditor.changeContentType("text/actionscript");
|
||||
DefaultSyntaxKit kit = (DefaultSyntaxKit) decompiledEditor.getEditorKit();
|
||||
kit.installComponent(decompiledEditor, ActionVariableMarker.class.getName());
|
||||
kit.installComponent(decompiledEditor, VariableMarker.class.getName());
|
||||
|
||||
editor.addCaretListener(new CaretListener() {
|
||||
@Override
|
||||
|
||||
@@ -80,7 +80,6 @@ public class DebuggableEditorPane extends LineMarkedEditorPane implements BreakP
|
||||
|
||||
private boolean showMarkers = true;
|
||||
|
||||
private WeakReference<SWF> swfRef = new WeakReference(null);
|
||||
|
||||
public DebuggableEditorPane() {
|
||||
|
||||
@@ -91,14 +90,6 @@ public class DebuggableEditorPane extends LineMarkedEditorPane implements BreakP
|
||||
BREAKPOINT_MARKER = new LineMarker(FG_BREAKPOINT_COLOR, BG_BREAKPOINT_COLOR, PRIORITY_BREAKPOINT);
|
||||
}
|
||||
}
|
||||
|
||||
public void setSwf(SWF swf) {
|
||||
this.swfRef = new WeakReference<>(swf);
|
||||
}
|
||||
|
||||
public SWF getSwf() {
|
||||
return swfRef.get();
|
||||
}
|
||||
|
||||
public synchronized void setScriptName(String scriptName, String breakPointScriptName) {
|
||||
this.scriptName = scriptName;
|
||||
|
||||
@@ -18,6 +18,7 @@ package com.jpexs.decompiler.flash.gui.editor;
|
||||
|
||||
import com.jpexs.decompiler.flash.configuration.Configuration;
|
||||
import com.jpexs.decompiler.flash.gui.AppStrings;
|
||||
import com.jpexs.decompiler.flash.simpleparser.SimpleParser;
|
||||
import com.jpexs.helpers.Reference;
|
||||
import java.awt.Color;
|
||||
import java.awt.Cursor;
|
||||
@@ -80,7 +81,9 @@ public class LineMarkedEditorPane extends UndoFixedEditorPane implements LinkHan
|
||||
private LinkHandler linkHandler = this;
|
||||
|
||||
private Point lastCursorPos = new Point(0, 0);
|
||||
|
||||
|
||||
private SimpleParser parser;
|
||||
|
||||
public static class LineMarker implements Comparable<LineMarker> {
|
||||
|
||||
private final Color bgColor;
|
||||
@@ -147,6 +150,15 @@ public class LineMarkedEditorPane extends UndoFixedEditorPane implements LinkHan
|
||||
}
|
||||
}
|
||||
|
||||
public SimpleParser getParser() {
|
||||
return parser;
|
||||
}
|
||||
|
||||
public void setParser(SimpleParser parser) {
|
||||
this.parser = parser;
|
||||
}
|
||||
|
||||
|
||||
private Map<Integer, SortedSet<LineMarker>> lineMarkers = Collections.synchronizedMap(new HashMap<Integer, SortedSet<LineMarker>>());
|
||||
|
||||
public void setLineMarkers(Map<Integer, SortedSet<LineMarker>> colorMarkers) {
|
||||
|
||||
@@ -14,18 +14,10 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.jpexs.decompiler.flash.gui.action;
|
||||
package com.jpexs.decompiler.flash.gui.editor;
|
||||
|
||||
import com.jpexs.decompiler.flash.SWF;
|
||||
import com.jpexs.decompiler.flash.action.parser.ActionParseException;
|
||||
import com.jpexs.decompiler.flash.action.parser.script.variables.ActionScript2VariableParser;
|
||||
import com.jpexs.decompiler.flash.action.parser.script.variables.ActionVariableParseException;
|
||||
import com.jpexs.decompiler.flash.gui.editor.DebuggableEditorPane;
|
||||
import com.jpexs.decompiler.flash.gui.editor.LineMarkedEditorPane;
|
||||
import com.jpexs.decompiler.flash.gui.editor.LinkHandler;
|
||||
import com.jpexs.decompiler.flash.gui.editor.ScrollbarOverlay;
|
||||
import com.jpexs.decompiler.flash.gui.editor.TrackRectSubstanceScrollbarUI;
|
||||
import com.jpexs.decompiler.flash.gui.editor.WavyUnderLinePainter;
|
||||
import com.jpexs.decompiler.flash.simpleparser.SimpleParseException;
|
||||
import com.jpexs.decompiler.flash.simpleparser.SimpleParser;
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.Color;
|
||||
import java.awt.event.MouseEvent;
|
||||
@@ -41,7 +33,6 @@ import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.Timer;
|
||||
import java.util.TimerTask;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import javax.swing.JEditorPane;
|
||||
import javax.swing.JLayer;
|
||||
@@ -69,9 +60,9 @@ import jsyntaxpane.util.Configuration;
|
||||
import org.pushingpixels.substance.internal.ui.SubstanceScrollBarUI;
|
||||
|
||||
/**
|
||||
* This class highlights Variable tokens of ActionScript 1/2
|
||||
* This class highlights Variable and error tokens.
|
||||
*/
|
||||
public class ActionVariableMarker implements SyntaxComponent, CaretListener, PropertyChangeListener, DocumentListener, LinkHandler {
|
||||
public class VariableMarker implements SyntaxComponent, CaretListener, PropertyChangeListener, DocumentListener, LinkHandler {
|
||||
|
||||
public static final String DEFAULT_TOKENTYPES = "IDENTIFIER, KEYWORD, REGEX";
|
||||
public static final String PROPERTY_COLOR = "ActionVariableMarker.Color";
|
||||
@@ -88,8 +79,6 @@ public class ActionVariableMarker implements SyntaxComponent, CaretListener, Pro
|
||||
private Markers.SimpleMarker errorMarker;
|
||||
private Status status;
|
||||
private Map<Integer, String> errors = new LinkedHashMap<>();
|
||||
private boolean errorsShown = false;
|
||||
|
||||
public static final long ERROR_DELAY = 2000;
|
||||
private Timer errorsTimer;
|
||||
|
||||
@@ -109,7 +98,7 @@ public class ActionVariableMarker implements SyntaxComponent, CaretListener, Pro
|
||||
/**
|
||||
* Constructs a new Token highlighter
|
||||
*/
|
||||
public ActionVariableMarker() {
|
||||
public VariableMarker() {
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -145,7 +134,6 @@ public class ActionVariableMarker implements SyntaxComponent, CaretListener, Pro
|
||||
|
||||
public void removeErrorMarkers() {
|
||||
Markers.removeMarkers(pane, errorMarker);
|
||||
errorsShown = false;
|
||||
scrollbarOverlay.removeMarkers(SCROLLBAR_ERROR_COLOR);
|
||||
}
|
||||
|
||||
@@ -206,7 +194,6 @@ public class ActionVariableMarker implements SyntaxComponent, CaretListener, Pro
|
||||
}
|
||||
layer.repaint();
|
||||
doc.readUnlock();
|
||||
errorsShown = true;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -348,7 +335,7 @@ public class ActionVariableMarker implements SyntaxComponent, CaretListener, Pro
|
||||
scrollPane.getVerticalScrollBar().setUI(originalScrollBarUI);
|
||||
}
|
||||
|
||||
private static final Logger LOG = Logger.getLogger(ActionVariableMarker.class.getName());
|
||||
private static final Logger LOG = Logger.getLogger(VariableMarker.class.getName());
|
||||
|
||||
@Override
|
||||
public void propertyChange(PropertyChangeEvent evt) {
|
||||
@@ -373,30 +360,28 @@ public class ActionVariableMarker implements SyntaxComponent, CaretListener, Pro
|
||||
|
||||
String fullText = sDoc.getText(0, sDoc.getLength());
|
||||
|
||||
SWF swf = null;
|
||||
if (pane instanceof DebuggableEditorPane) {
|
||||
DebuggableEditorPane dpane = (DebuggableEditorPane) pane;
|
||||
swf = dpane.getSwf();
|
||||
if (!(pane instanceof LineMarkedEditorPane)) {
|
||||
return;
|
||||
}
|
||||
if (swf == null) {
|
||||
SimpleParser parser = ((LineMarkedEditorPane) pane).getParser();
|
||||
if (parser == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
Map<Integer, List<Integer>> newDefinitionPosToReferences = new LinkedHashMap<>();
|
||||
Map<Integer, Integer> newReferenceToDefinition = new LinkedHashMap<>();
|
||||
ActionScript2VariableParser varParser = new ActionScript2VariableParser(swf);
|
||||
List<ActionVariableParseException> newErrors = new ArrayList<>();
|
||||
varParser.parse(fullText, newDefinitionPosToReferences, newReferenceToDefinition, newErrors);
|
||||
List<SimpleParseException> newErrors = new ArrayList<>();
|
||||
parser.parse(fullText, newDefinitionPosToReferences, newReferenceToDefinition, newErrors);
|
||||
definitionPosToReferences = newDefinitionPosToReferences;
|
||||
referenceToDefinition = newReferenceToDefinition;
|
||||
for (ActionVariableParseException ex : newErrors) {
|
||||
for (SimpleParseException ex : newErrors) {
|
||||
errors.put((int) ex.position, ex.getMessage());
|
||||
}
|
||||
} catch (BadLocationException | IOException | InterruptedException ex) {
|
||||
definitionPosToReferences.clear();
|
||||
referenceToDefinition.clear();
|
||||
//ex.printStackTrace();
|
||||
} catch (ActionParseException ex) {
|
||||
} catch (SimpleParseException ex) {
|
||||
definitionPosToReferences.clear();
|
||||
referenceToDefinition.clear();
|
||||
errors.put((int) ex.position, ex.getMessage());
|
||||
Reference in New Issue
Block a user