FlashPlayer path modified to "lib/FlashPlayer.exe"

Source Formatting
Few refactorings
This commit is contained in:
Jindra Pet��k
2013-04-10 19:44:39 +02:00
parent 2da1d61f59
commit b53aed8bbe
33 changed files with 266 additions and 216 deletions
@@ -14,9 +14,9 @@
* 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.action.parser;
package com.jpexs.decompiler.flash.action.parser.pcode;
public class ParsedSymbol {
public class ASMParsedSymbol {
public int type;
public Object value;
@@ -38,12 +38,12 @@ public class ParsedSymbol {
public static final int TYPE_EOL = 16;
public static final int TYPE_CONSTANT_LITERAL = 17;
public ParsedSymbol(int type, Object value) {
public ASMParsedSymbol(int type, Object value) {
this.type = type;
this.value = value;
}
public ParsedSymbol(int type) {
public ASMParsedSymbol(int type) {
this.type = type;
}
}
@@ -14,11 +14,12 @@
* 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.action.parser;
package com.jpexs.decompiler.flash.action.parser.pcode;
import com.jpexs.decompiler.flash.action.Action;
import com.jpexs.decompiler.flash.action.flashlite.ActionFSCommand2;
import com.jpexs.decompiler.flash.action.flashlite.ActionStrictMode;
import com.jpexs.decompiler.flash.action.parser.ParseException;
import com.jpexs.decompiler.flash.action.special.ActionNop;
import com.jpexs.decompiler.flash.action.swf3.*;
import com.jpexs.decompiler.flash.action.swf4.*;
@@ -43,10 +44,10 @@ public class ASMParser {
Stack<GraphSourceItemContainer> containers = new Stack<GraphSourceItemContainer>();
HashMap<GraphSourceItemContainer, Integer> containerPos = new HashMap<GraphSourceItemContainer, Integer>();
while (true) {
ParsedSymbol symb = lexer.yylex();
if (symb.type == ParsedSymbol.TYPE_LABEL) {
ASMParsedSymbol symb = lexer.yylex();
if (symb.type == ASMParsedSymbol.TYPE_LABEL) {
labels.add(new Label((String) symb.value, address));
} else if (symb.type == ParsedSymbol.TYPE_COMMENT) {
} else if (symb.type == ASMParsedSymbol.TYPE_COMMENT) {
if (!list.isEmpty()) {
String cmt = (String) symb.value;
if (cmt.equals("compileTime")) {
@@ -56,7 +57,7 @@ public class ASMParser {
}
}
}
} else if (symb.type == ParsedSymbol.TYPE_BLOCK_END) {
} else if (symb.type == ASMParsedSymbol.TYPE_BLOCK_END) {
if (containers.isEmpty()) {
throw new ParseException("Block end without start", lexer.yyline());
}
@@ -66,7 +67,7 @@ public class ASMParser {
if (!a.parseDivision(pos, address, lexer)) {
containers.pop();
}
} else if (symb.type == ParsedSymbol.TYPE_INSTRUCTION_NAME) {
} else if (symb.type == ASMParsedSymbol.TYPE_INSTRUCTION_NAME) {
String instructionName = ((String) symb.value).toLowerCase();
Action a = null;
if (instructionName.equals("GetURL".toLowerCase())) {
@@ -298,8 +299,8 @@ public class ASMParser {
if (a != null) {
list.add(a);
}
} else if (symb.type == ParsedSymbol.TYPE_EOL) {
} else if ((symb.type == ParsedSymbol.TYPE_BLOCK_END) || (symb.type == ParsedSymbol.TYPE_EOF)) {
} else if (symb.type == ASMParsedSymbol.TYPE_EOL) {
} else if ((symb.type == ASMParsedSymbol.TYPE_BLOCK_END) || (symb.type == ASMParsedSymbol.TYPE_EOF)) {
return list;
} else {
throw new ParseException("Label or Instruction name expected, found:" + symb.type + " " + symb.value, lexer.yyline());
@@ -1,8 +1,9 @@
/* The following code was generated by JFlex 1.4.3 on 3.4.13 22:09 */
/* The following code was generated by JFlex 1.4.3 on 7.4.13 15:38 */
/* Flash assembler language lexer specification */
package com.jpexs.decompiler.flash.action.parser;
package com.jpexs.decompiler.flash.action.parser.pcode;
import com.jpexs.decompiler.flash.action.parser.ParseException;
import com.jpexs.decompiler.flash.action.swf4.ConstantIndex;
import com.jpexs.decompiler.flash.action.swf4.Null;
import com.jpexs.decompiler.flash.action.swf4.RegisterNumber;
@@ -10,9 +11,9 @@ import com.jpexs.decompiler.flash.action.swf4.Undefined;
/**
* This class is a scanner generated by
* <a href="http://www.jflex.de/">JFlex</a> 1.4.3 on 3.4.13 22:09 from the
* <a href="http://www.jflex.de/">JFlex</a> 1.4.3 on 7.4.13 15:38 from the
* specification file
* <tt>D:/Dokumenty/Programovani/JavaSE/FFDec/trunk/src/com/jpexs/decompiler/flash/action/parser/flasm.flex</tt>
* <tt>D:/Dokumenty/Programovani/JavaSE/FFDec/trunk/src/com/jpexs/decompiler/flash/action/parser/pcode/flasm.flex</tt>
*/
public final class FlasmLexer {
@@ -722,7 +723,7 @@ public final class FlasmLexer {
* @return the next token
* @exception java.io.IOException if any I/O-Error occurs
*/
public ParsedSymbol yylex() throws java.io.IOException, ParseException {
public ASMParsedSymbol yylex() throws java.io.IOException, ParseException {
int zzInput;
int zzAction;
@@ -851,152 +852,152 @@ public final class FlasmLexer {
zzMarkedPos = zzMarkedPosL;
switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
case 9: {
return new ParsedSymbol(ParsedSymbol.TYPE_IDENTIFIER, yytext());
}
case 31:
break;
case 23: {
string.append('\'');
}
case 31:
break;
case 25: {
return new ASMParsedSymbol(ASMParsedSymbol.TYPE_BOOLEAN, Boolean.TRUE);
}
case 32:
break;
case 30: {
return new ParsedSymbol(ParsedSymbol.TYPE_CONSTANT, new ConstantIndex(Integer.parseInt(yytext().substring(8))));
}
case 33:
break;
case 10: {
return new ParsedSymbol(ParsedSymbol.TYPE_INTEGER, new Long(Long.parseLong((yytext()))));
}
case 34:
break;
case 7: {
yybegin(YYINITIAL);
return new ParsedSymbol(ParsedSymbol.TYPE_EOL);
}
case 35:
break;
case 19: {
char val = (char) Integer.parseInt(yytext().substring(1), 8);
string.append(val);
}
case 36:
case 33:
break;
case 4: {
string.append(yytext());
}
case 37:
case 34:
break;
case 2: {
yybegin(PARAMETERS);
return new ParsedSymbol(ParsedSymbol.TYPE_INSTRUCTION_NAME, yytext());
case 7: {
yybegin(YYINITIAL);
return new ASMParsedSymbol(ASMParsedSymbol.TYPE_EOL);
}
case 38:
case 35:
break;
case 16: {
string.append('\r');
}
case 39:
case 36:
break;
case 12: {
yybegin(STRING);
string.setLength(0);
}
case 37:
break;
case 26: {
return new ASMParsedSymbol(ASMParsedSymbol.TYPE_NULL, new Null());
}
case 38:
break;
case 3: {
return new ASMParsedSymbol(ASMParsedSymbol.TYPE_BLOCK_END);
}
case 39:
break;
case 30: {
return new ASMParsedSymbol(ASMParsedSymbol.TYPE_CONSTANT, new ConstantIndex(Integer.parseInt(yytext().substring(8))));
}
case 40:
break;
case 6: {
yybegin(PARAMETERS);
// length also includes the trailing quote
return new ParsedSymbol(ParsedSymbol.TYPE_STRING, string.toString());
}
case 41:
break;
case 8: {
return new ParsedSymbol(ParsedSymbol.TYPE_COMMENT, yytext().substring(1));
}
case 42:
break;
case 27: {
return new ParsedSymbol(ParsedSymbol.TYPE_BOOLEAN, Boolean.FALSE);
}
case 43:
break;
case 22: {
string.append('\b');
}
case 44:
case 41:
break;
case 13: {
String s = yytext();
return new ParsedSymbol(ParsedSymbol.TYPE_LABEL, s.substring(0, s.length() - 1));
case 9: {
return new ASMParsedSymbol(ASMParsedSymbol.TYPE_IDENTIFIER, yytext());
}
case 45:
case 42:
break;
case 5: {
throw new ParseException("Unterminated string at end of line", yyline + 1);
}
case 46:
case 43:
break;
case 11: {
yybegin(YYINITIAL);
return new ParsedSymbol(ParsedSymbol.TYPE_BLOCK_START);
case 27: {
return new ASMParsedSymbol(ASMParsedSymbol.TYPE_BOOLEAN, Boolean.FALSE);
}
case 47:
case 44:
break;
case 24: {
return new ASMParsedSymbol(ASMParsedSymbol.TYPE_FLOAT, new Double(Double.parseDouble((yytext()))));
}
case 45:
break;
case 15: {
string.append('\t');
}
case 46:
break;
case 6: {
yybegin(PARAMETERS);
// length also includes the trailing quote
return new ASMParsedSymbol(ASMParsedSymbol.TYPE_STRING, string.toString());
}
case 47:
break;
case 2: {
yybegin(PARAMETERS);
return new ASMParsedSymbol(ASMParsedSymbol.TYPE_INSTRUCTION_NAME, yytext());
}
case 48:
break;
case 28: {
return new ParsedSymbol(ParsedSymbol.TYPE_REGISTER, new RegisterNumber(Integer.parseInt(yytext().substring(8))));
return new ASMParsedSymbol(ASMParsedSymbol.TYPE_REGISTER, new RegisterNumber(Integer.parseInt(yytext().substring(8))));
}
case 49:
break;
case 24: {
return new ParsedSymbol(ParsedSymbol.TYPE_FLOAT, new Double(Double.parseDouble((yytext()))));
case 13: {
String s = yytext();
return new ASMParsedSymbol(ASMParsedSymbol.TYPE_LABEL, s.substring(0, s.length() - 1));
}
case 50:
break;
case 25: {
return new ParsedSymbol(ParsedSymbol.TYPE_BOOLEAN, Boolean.TRUE);
}
case 51:
break;
case 26: {
return new ParsedSymbol(ParsedSymbol.TYPE_NULL, new Null());
}
case 52:
break;
case 20: {
string.append('\\');
}
case 53:
case 51:
break;
case 14: {
throw new ParseException("Illegal escape sequence \"" + yytext() + "\"", yyline + 1);
}
case 54:
case 52:
break;
case 29: {
return new ASMParsedSymbol(ASMParsedSymbol.TYPE_UNDEFINED, new Undefined());
}
case 53:
break;
case 18: {
string.append('\n');
}
case 54:
break;
case 10: {
return new ASMParsedSymbol(ASMParsedSymbol.TYPE_INTEGER, new Long(Long.parseLong((yytext()))));
}
case 55:
break;
case 3: {
return new ParsedSymbol(ParsedSymbol.TYPE_BLOCK_END);
}
case 56:
break;
case 29: {
return new ParsedSymbol(ParsedSymbol.TYPE_UNDEFINED, new Undefined());
}
case 57:
break;
case 17: {
string.append('\f');
}
case 56:
break;
case 8: {
return new ASMParsedSymbol(ASMParsedSymbol.TYPE_COMMENT, yytext().substring(1));
}
case 57:
break;
case 11: {
yybegin(YYINITIAL);
return new ASMParsedSymbol(ASMParsedSymbol.TYPE_BLOCK_START);
}
case 58:
break;
case 21: {
@@ -1012,7 +1013,7 @@ public final class FlasmLexer {
if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
zzAtEOF = true;
{
return new ParsedSymbol(ParsedSymbol.TYPE_EOF);
return new ASMParsedSymbol(ASMParsedSymbol.TYPE_EOF);
}
} else {
zzScanError(ZZ_NO_MATCH);
@@ -14,7 +14,7 @@
* 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.action.parser;
package com.jpexs.decompiler.flash.action.parser.pcode;
public class Label {
@@ -1,7 +1,8 @@
/* Flash assembler language lexer specification */
package com.jpexs.decompiler.flash.action.parser;
package com.jpexs.decompiler.flash.action.parser.pcode;
import com.jpexs.decompiler.flash.action.parser.ParseException;
import com.jpexs.decompiler.flash.action.swf4.ConstantIndex;
import com.jpexs.decompiler.flash.action.swf4.RegisterNumber;
import com.jpexs.decompiler.flash.action.swf4.Undefined;
@@ -16,7 +17,7 @@ import com.jpexs.decompiler.flash.action.swf4.Null;
%char
%line
%column
%type ParsedSymbol
%type ASMParsedSymbol
%throws ParseException
%{
@@ -104,14 +105,14 @@ Constant= constant{PositiveNumberLiteral}
{Label} {
String s=yytext();
return new ParsedSymbol(ParsedSymbol.TYPE_LABEL,s.substring(0,s.length()-1));
return new ASMParsedSymbol(ASMParsedSymbol.TYPE_LABEL,s.substring(0,s.length()-1));
}
/* identifiers */
{InstructionName} { yybegin(PARAMETERS);
return new ParsedSymbol(ParsedSymbol.TYPE_INSTRUCTION_NAME,yytext());
return new ASMParsedSymbol(ASMParsedSymbol.TYPE_INSTRUCTION_NAME,yytext());
}
{EndOfBlock} { return new ParsedSymbol(ParsedSymbol.TYPE_BLOCK_END); }
{EndOfBlock} { return new ASMParsedSymbol(ASMParsedSymbol.TYPE_BLOCK_END); }
}
<PARAMETERS> {
@@ -123,20 +124,20 @@ Constant= constant{PositiveNumberLiteral}
/* numeric literals */
{NumberLiteral} { return new ParsedSymbol(ParsedSymbol.TYPE_INTEGER,new Long(Long.parseLong((yytext())))); }
{FloatLiteral} { return new ParsedSymbol(ParsedSymbol.TYPE_FLOAT,new Double(Double.parseDouble((yytext())))); }
{LineTerminator} {yybegin(YYINITIAL); return new ParsedSymbol(ParsedSymbol.TYPE_EOL); }
{Comment} {return new ParsedSymbol(ParsedSymbol.TYPE_COMMENT,yytext().substring(1));}
{StartOfBlock} { yybegin(YYINITIAL); return new ParsedSymbol(ParsedSymbol.TYPE_BLOCK_START); }
{True} {return new ParsedSymbol(ParsedSymbol.TYPE_BOOLEAN,Boolean.TRUE);}
{False} {return new ParsedSymbol(ParsedSymbol.TYPE_BOOLEAN,Boolean.FALSE);}
{Null} {return new ParsedSymbol(ParsedSymbol.TYPE_NULL,new Null());}
{Undefined} {return new ParsedSymbol(ParsedSymbol.TYPE_UNDEFINED,new Undefined());}
{NumberLiteral} { return new ASMParsedSymbol(ASMParsedSymbol.TYPE_INTEGER,new Long(Long.parseLong((yytext())))); }
{FloatLiteral} { return new ASMParsedSymbol(ASMParsedSymbol.TYPE_FLOAT,new Double(Double.parseDouble((yytext())))); }
{LineTerminator} {yybegin(YYINITIAL); return new ASMParsedSymbol(ASMParsedSymbol.TYPE_EOL); }
{Comment} {return new ASMParsedSymbol(ASMParsedSymbol.TYPE_COMMENT,yytext().substring(1));}
{StartOfBlock} { yybegin(YYINITIAL); return new ASMParsedSymbol(ASMParsedSymbol.TYPE_BLOCK_START); }
{True} {return new ASMParsedSymbol(ASMParsedSymbol.TYPE_BOOLEAN,Boolean.TRUE);}
{False} {return new ASMParsedSymbol(ASMParsedSymbol.TYPE_BOOLEAN,Boolean.FALSE);}
{Null} {return new ASMParsedSymbol(ASMParsedSymbol.TYPE_NULL,new Null());}
{Undefined} {return new ASMParsedSymbol(ASMParsedSymbol.TYPE_UNDEFINED,new Undefined());}
{Register} { return new ParsedSymbol(ParsedSymbol.TYPE_REGISTER,new RegisterNumber(Integer.parseInt(yytext().substring(8)))); }
{Constant} { return new ParsedSymbol(ParsedSymbol.TYPE_CONSTANT,new ConstantIndex(Integer.parseInt(yytext().substring(8)))); }
{Register} { return new ASMParsedSymbol(ASMParsedSymbol.TYPE_REGISTER,new RegisterNumber(Integer.parseInt(yytext().substring(8)))); }
{Constant} { return new ASMParsedSymbol(ASMParsedSymbol.TYPE_CONSTANT,new ConstantIndex(Integer.parseInt(yytext().substring(8)))); }
{Identifier} { return new ParsedSymbol(ParsedSymbol.TYPE_IDENTIFIER,yytext()); }
{Identifier} { return new ASMParsedSymbol(ASMParsedSymbol.TYPE_IDENTIFIER,yytext()); }
}
@@ -144,7 +145,7 @@ Constant= constant{PositiveNumberLiteral}
\" {
yybegin(PARAMETERS);
// length also includes the trailing quote
return new ParsedSymbol(ParsedSymbol.TYPE_STRING,string.toString());
return new ASMParsedSymbol(ASMParsedSymbol.TYPE_STRING,string.toString());
}
{StringCharacter}+ { string.append( yytext() ); }
@@ -169,4 +170,4 @@ Constant= constant{PositiveNumberLiteral}
/* error fallback */
.|\n { }
<<EOF>> { return new ParsedSymbol(ParsedSymbol.TYPE_EOF); }
<<EOF>> { return new ASMParsedSymbol(ASMParsedSymbol.TYPE_EOF); }