mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/jpexs-decompiler.git
synced 2026-06-04 03:35:09 +00:00
AS3 highlighter.
Refactoring of highligter.
This commit is contained in:
@@ -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;
|
||||
|
||||
/**
|
||||
*
|
||||
Reference in New Issue
Block a user