mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/jpexs-decompiler.git
synced 2026-09-26 21:20:44 +00:00
highlighting refactored
This commit is contained in:
@@ -18,7 +18,7 @@ package com.jpexs.decompiler.graph;
|
||||
|
||||
import com.jpexs.decompiler.flash.action.Action;
|
||||
import com.jpexs.decompiler.flash.ecma.EcmaScript;
|
||||
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
|
||||
import com.jpexs.decompiler.flash.helpers.GraphTextWriter;
|
||||
import com.jpexs.decompiler.flash.helpers.hilight.Highlighting;
|
||||
import com.jpexs.decompiler.graph.model.AndItem;
|
||||
import com.jpexs.decompiler.graph.model.BreakItem;
|
||||
@@ -2147,7 +2147,7 @@ public class Graph {
|
||||
* @param localData
|
||||
* @return String
|
||||
*/
|
||||
public static HilightedTextWriter graphToString(List<GraphTargetItem> tree, HilightedTextWriter writer, LocalData localData) {
|
||||
public static GraphTextWriter graphToString(List<GraphTargetItem> tree, GraphTextWriter writer, LocalData localData) {
|
||||
for (GraphTargetItem ti : tree) {
|
||||
if (!ti.isEmpty()) {
|
||||
ti.toStringSemicoloned(writer, localData).newLine();
|
||||
@@ -2156,43 +2156,6 @@ public class Graph {
|
||||
return writer;
|
||||
}
|
||||
|
||||
public static String removeNonRefenrencedLoopLabels(String source, boolean hilighted) {
|
||||
String[] parts = source.split("\r\n");
|
||||
String labelPattern = "loop(switch)?[0-9]*:";
|
||||
StringBuilder ret = new StringBuilder();
|
||||
for (int p = 0; p < parts.length; p++) {
|
||||
String strippedP = (hilighted ? Highlighting.stripHilights(parts[p]) : parts[p]).trim();
|
||||
if (strippedP.matches(labelPattern)) {//endsWith(":") && (!strippedP.startsWith("case ")) && (!strippedP.equals("default:"))) {
|
||||
String loopname = strippedP.substring(0, strippedP.length() - 1);
|
||||
boolean dorefer = false;
|
||||
for (int q = p + 1; q < parts.length; q++) {
|
||||
String strippedQ = (hilighted ? Highlighting.stripHilights(parts[q]) : parts[q]).trim();
|
||||
if (strippedQ.equals("break " + loopname.replace("switch", "") + ";")) {
|
||||
dorefer = true;
|
||||
break;
|
||||
}
|
||||
if (strippedQ.equals("continue " + loopname + ";")) {
|
||||
dorefer = true;
|
||||
break;
|
||||
}
|
||||
if (strippedQ.equals(":" + loopname)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!dorefer) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (strippedP.startsWith(":")) {
|
||||
continue;
|
||||
}
|
||||
|
||||
ret.append(parts[p]);
|
||||
ret.append("\r\n");
|
||||
}
|
||||
return ret.toString();
|
||||
}
|
||||
|
||||
public List<Object> prepareBranchLocalData(List<Object> localData) {
|
||||
return localData;
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
*/
|
||||
package com.jpexs.decompiler.graph;
|
||||
|
||||
import com.jpexs.decompiler.flash.helpers.GraphTextWriter;
|
||||
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
|
||||
import com.jpexs.decompiler.graph.model.BinaryOp;
|
||||
import com.jpexs.decompiler.graph.model.LocalData;
|
||||
@@ -83,7 +84,7 @@ public abstract class GraphTargetItem implements Serializable {
|
||||
return ret;
|
||||
}
|
||||
|
||||
public HilightedTextWriter toStringSemicoloned(HilightedTextWriter writer, LocalData localData) {
|
||||
public GraphTextWriter toStringSemicoloned(GraphTextWriter writer, LocalData localData) {
|
||||
writer.startOffset(src, pos);
|
||||
appendTo(writer, localData);
|
||||
if (needsSemicolon()) {
|
||||
@@ -102,15 +103,15 @@ public abstract class GraphTargetItem implements Serializable {
|
||||
return this.getClass().getName();
|
||||
}
|
||||
|
||||
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
|
||||
public GraphTextWriter toString(GraphTextWriter writer, LocalData localData) {
|
||||
writer.startOffset(src, pos);
|
||||
appendTo(writer, localData);
|
||||
writer.endOffset();
|
||||
return writer;
|
||||
}
|
||||
|
||||
protected abstract HilightedTextWriter appendTo(HilightedTextWriter writer, LocalData localData);
|
||||
|
||||
protected abstract GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData);
|
||||
|
||||
public String toString(LocalData localData) {
|
||||
HilightedTextWriter writer = new HilightedTextWriter(false);
|
||||
toString(writer, localData);
|
||||
@@ -145,19 +146,17 @@ public abstract class GraphTargetItem implements Serializable {
|
||||
}
|
||||
|
||||
public String toStringNoQuotes(LocalData localData) {
|
||||
HilightedTextWriter writer = new HilightedTextWriter(false);
|
||||
toStringNoQuotes(writer, localData);
|
||||
return writer.toString();
|
||||
return toString();
|
||||
}
|
||||
|
||||
public HilightedTextWriter toStringNoQuotes(HilightedTextWriter writer, LocalData localData) {
|
||||
public GraphTextWriter toStringNoQuotes(GraphTextWriter writer, LocalData localData) {
|
||||
writer.startOffset(src, pos);
|
||||
appendToNoQuotes(writer, localData);
|
||||
writer.endOffset();
|
||||
return writer;
|
||||
}
|
||||
|
||||
protected HilightedTextWriter appendToNoQuotes(HilightedTextWriter writer, LocalData localData) {
|
||||
protected GraphTextWriter appendToNoQuotes(GraphTextWriter writer, LocalData localData) {
|
||||
return toString(writer, localData);
|
||||
}
|
||||
|
||||
@@ -173,7 +172,7 @@ public abstract class GraphTargetItem implements Serializable {
|
||||
return false;
|
||||
}
|
||||
|
||||
public HilightedTextWriter toStringNL(HilightedTextWriter writer, LocalData localData) {
|
||||
public GraphTextWriter toStringNL(GraphTextWriter writer, LocalData localData) {
|
||||
writer.startOffset(src, pos);
|
||||
appendTo(writer, localData);
|
||||
if (needsNewLine()) {
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
*/
|
||||
package com.jpexs.decompiler.graph;
|
||||
|
||||
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
|
||||
import com.jpexs.decompiler.flash.helpers.GraphTextWriter;
|
||||
import com.jpexs.decompiler.graph.model.LocalData;
|
||||
|
||||
/**
|
||||
@@ -33,7 +33,7 @@ public class MarkItem extends GraphTargetItem {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected HilightedTextWriter appendTo(HilightedTextWriter writer, LocalData localData) {
|
||||
protected GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) {
|
||||
return writer.append("//decompiler mark:" + mark);
|
||||
}
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
*/
|
||||
package com.jpexs.decompiler.graph;
|
||||
|
||||
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
|
||||
import com.jpexs.decompiler.flash.helpers.GraphTextWriter;
|
||||
import com.jpexs.decompiler.graph.model.LocalData;
|
||||
|
||||
/**
|
||||
@@ -46,7 +46,7 @@ public class NotCompileTimeItem extends GraphTargetItem {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected HilightedTextWriter appendTo(HilightedTextWriter writer, LocalData localData) {
|
||||
protected GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) {
|
||||
return object.toString(writer, localData);
|
||||
}
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
*/
|
||||
package com.jpexs.decompiler.graph.model;
|
||||
|
||||
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
|
||||
import com.jpexs.decompiler.flash.helpers.GraphTextWriter;
|
||||
import com.jpexs.decompiler.graph.GraphPart;
|
||||
import com.jpexs.decompiler.graph.GraphSourceItem;
|
||||
import com.jpexs.decompiler.graph.GraphSourceItemPos;
|
||||
@@ -47,7 +47,7 @@ public abstract class BinaryOpItem extends GraphTargetItem implements BinaryOp {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected HilightedTextWriter appendTo(HilightedTextWriter writer, LocalData localData) {
|
||||
protected GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) {
|
||||
if (leftSide.getPrecedence() > precedence) {
|
||||
writer.append("(");
|
||||
leftSide.toString(writer, localData);
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
*/
|
||||
package com.jpexs.decompiler.graph.model;
|
||||
|
||||
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
|
||||
import com.jpexs.decompiler.flash.helpers.GraphTextWriter;
|
||||
import com.jpexs.decompiler.graph.Graph;
|
||||
import com.jpexs.decompiler.graph.GraphSourceItem;
|
||||
import com.jpexs.decompiler.graph.GraphTargetItem;
|
||||
@@ -37,7 +37,7 @@ public class BlockItem extends GraphTargetItem {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected HilightedTextWriter appendTo(HilightedTextWriter writer, LocalData localData) {
|
||||
protected GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) {
|
||||
writer.append("{").newLine();
|
||||
writer.indent();
|
||||
Graph.graphToString(commands, writer, localData);
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.jpexs.decompiler.graph.model;
|
||||
|
||||
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
|
||||
import com.jpexs.decompiler.flash.helpers.GraphTextWriter;
|
||||
import com.jpexs.decompiler.flash.helpers.NulWriter;
|
||||
import com.jpexs.decompiler.graph.GraphSourceItem;
|
||||
import com.jpexs.decompiler.graph.GraphTargetItem;
|
||||
import com.jpexs.decompiler.graph.SourceGenerator;
|
||||
@@ -13,6 +14,7 @@ import java.util.List;
|
||||
public class BreakItem extends GraphTargetItem {
|
||||
|
||||
public long loopId;
|
||||
private boolean labelRequired;
|
||||
|
||||
public BreakItem(GraphSourceItem src, long loopId) {
|
||||
super(src, NOPRECEDENCE);
|
||||
@@ -20,9 +22,16 @@ public class BreakItem extends GraphTargetItem {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected HilightedTextWriter appendTo(HilightedTextWriter writer, LocalData localData) {
|
||||
protected GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) {
|
||||
writer.append("break");
|
||||
if (loopId != writer.getLoop()) {
|
||||
if (writer instanceof NulWriter) {
|
||||
NulWriter nulWriter = (NulWriter) writer;
|
||||
labelRequired = loopId != nulWriter.getLoop();
|
||||
if (labelRequired) {
|
||||
nulWriter.setLoopUsed(loopId);
|
||||
}
|
||||
}
|
||||
if (labelRequired) {
|
||||
writer.append(" loop" + loopId);
|
||||
}
|
||||
return writer;
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
*/
|
||||
package com.jpexs.decompiler.graph.model;
|
||||
|
||||
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
|
||||
import com.jpexs.decompiler.flash.helpers.GraphTextWriter;
|
||||
import com.jpexs.decompiler.graph.GraphSourceItem;
|
||||
import com.jpexs.decompiler.graph.GraphTargetItem;
|
||||
import com.jpexs.decompiler.graph.SourceGenerator;
|
||||
@@ -36,7 +36,7 @@ public class CommaExpressionItem extends GraphTargetItem {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected HilightedTextWriter appendTo(HilightedTextWriter writer, LocalData localData) {
|
||||
protected GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) {
|
||||
boolean first = true;
|
||||
for (GraphTargetItem t : commands) {
|
||||
if (!first) {
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
*/
|
||||
package com.jpexs.decompiler.graph.model;
|
||||
|
||||
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
|
||||
import com.jpexs.decompiler.flash.helpers.GraphTextWriter;
|
||||
import com.jpexs.decompiler.graph.GraphTargetItem;
|
||||
|
||||
/**
|
||||
@@ -33,7 +33,7 @@ public class CommentItem extends GraphTargetItem {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected HilightedTextWriter appendTo(HilightedTextWriter writer, LocalData localData) {
|
||||
protected GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) {
|
||||
return writer.append("/* " + comment + " */");
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.jpexs.decompiler.graph.model;
|
||||
|
||||
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
|
||||
import com.jpexs.decompiler.flash.helpers.GraphTextWriter;
|
||||
import com.jpexs.decompiler.flash.helpers.NulWriter;
|
||||
import com.jpexs.decompiler.graph.GraphSourceItem;
|
||||
import com.jpexs.decompiler.graph.GraphTargetItem;
|
||||
import com.jpexs.decompiler.graph.SourceGenerator;
|
||||
@@ -13,6 +14,7 @@ import java.util.List;
|
||||
public class ContinueItem extends GraphTargetItem {
|
||||
|
||||
public long loopId;
|
||||
private boolean labelRequired;
|
||||
|
||||
public ContinueItem(GraphSourceItem src, long loopId) {
|
||||
super(src, NOPRECEDENCE);
|
||||
@@ -20,9 +22,16 @@ public class ContinueItem extends GraphTargetItem {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected HilightedTextWriter appendTo(HilightedTextWriter writer, LocalData localData) {
|
||||
protected GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) {
|
||||
writer.append("continue");
|
||||
if (loopId != writer.getNonSwitchLoop()) {
|
||||
if (writer instanceof NulWriter) {
|
||||
NulWriter nulWriter = (NulWriter) writer;
|
||||
labelRequired = loopId != nulWriter.getNonSwitchLoop();
|
||||
if (labelRequired) {
|
||||
nulWriter.setLoopUsed(loopId);
|
||||
}
|
||||
}
|
||||
if (labelRequired) {
|
||||
writer.append(" loop" + loopId);
|
||||
}
|
||||
return writer;
|
||||
|
||||
@@ -16,8 +16,9 @@
|
||||
*/
|
||||
package com.jpexs.decompiler.graph.model;
|
||||
|
||||
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
|
||||
import com.jpexs.decompiler.flash.helpers.GraphTextWriter;
|
||||
import com.jpexs.decompiler.flash.helpers.LoopWithType;
|
||||
import com.jpexs.decompiler.flash.helpers.NulWriter;
|
||||
import com.jpexs.decompiler.graph.Block;
|
||||
import com.jpexs.decompiler.graph.GraphSourceItem;
|
||||
import com.jpexs.decompiler.graph.GraphTargetItem;
|
||||
@@ -30,6 +31,7 @@ public class DoWhileItem extends LoopItem implements Block {
|
||||
|
||||
public List<GraphTargetItem> commands;
|
||||
public List<GraphTargetItem> expression;
|
||||
private boolean labelUsed;
|
||||
|
||||
@Override
|
||||
public boolean needsSemicolon() {
|
||||
@@ -50,9 +52,13 @@ public class DoWhileItem extends LoopItem implements Block {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected HilightedTextWriter appendTo(HilightedTextWriter writer, LocalData localData) {
|
||||
writer.startLoop(loop.id, LoopWithType.LOOP_TYPE_LOOP);
|
||||
writer.append("loop" + loop.id + ":").newLine();
|
||||
protected GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) {
|
||||
if (writer instanceof NulWriter) {
|
||||
((NulWriter)writer).startLoop(loop.id, LoopWithType.LOOP_TYPE_LOOP);
|
||||
}
|
||||
if (labelUsed) {
|
||||
writer.append("loop" + loop.id + ":").newLine();
|
||||
}
|
||||
writer.append("do").newLine();
|
||||
writer.append("{").newLine();
|
||||
writer.indent();
|
||||
@@ -76,8 +82,10 @@ public class DoWhileItem extends LoopItem implements Block {
|
||||
}
|
||||
|
||||
writer.append(");").newLine();
|
||||
writer.append(":loop" + loop.id);
|
||||
writer.endLoop(loop.id);
|
||||
if (writer instanceof NulWriter) {
|
||||
LoopWithType loopOjb = ((NulWriter)writer).endLoop(loop.id);
|
||||
labelUsed = loopOjb.used;
|
||||
}
|
||||
return writer;
|
||||
}
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
*/
|
||||
package com.jpexs.decompiler.graph.model;
|
||||
|
||||
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
|
||||
import com.jpexs.decompiler.flash.helpers.GraphTextWriter;
|
||||
import com.jpexs.decompiler.graph.GraphSourceItem;
|
||||
import com.jpexs.decompiler.graph.GraphTargetItem;
|
||||
import com.jpexs.decompiler.graph.SourceGenerator;
|
||||
@@ -39,7 +39,7 @@ public class DuplicateItem extends GraphTargetItem {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected HilightedTextWriter appendTo(HilightedTextWriter writer, LocalData localData) {
|
||||
protected GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) {
|
||||
return value.toString(writer, localData);
|
||||
}
|
||||
|
||||
|
||||
@@ -16,8 +16,9 @@
|
||||
*/
|
||||
package com.jpexs.decompiler.graph.model;
|
||||
|
||||
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
|
||||
import com.jpexs.decompiler.flash.helpers.GraphTextWriter;
|
||||
import com.jpexs.decompiler.flash.helpers.LoopWithType;
|
||||
import com.jpexs.decompiler.flash.helpers.NulWriter;
|
||||
import com.jpexs.decompiler.graph.Block;
|
||||
import com.jpexs.decompiler.graph.GraphSourceItem;
|
||||
import com.jpexs.decompiler.graph.GraphTargetItem;
|
||||
@@ -32,6 +33,7 @@ public class ForItem extends LoopItem implements Block {
|
||||
public GraphTargetItem expression;
|
||||
public List<GraphTargetItem> finalCommands;
|
||||
public List<GraphTargetItem> commands;
|
||||
private boolean labelUsed;
|
||||
|
||||
@Override
|
||||
public List<List<GraphTargetItem>> getSubs() {
|
||||
@@ -51,9 +53,13 @@ public class ForItem extends LoopItem implements Block {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected HilightedTextWriter appendTo(HilightedTextWriter writer, LocalData localData) {
|
||||
writer.startLoop(loop.id, LoopWithType.LOOP_TYPE_LOOP);
|
||||
writer.append("loop" + loop.id + ":").newLine();
|
||||
protected GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) {
|
||||
if (writer instanceof NulWriter) {
|
||||
((NulWriter)writer).startLoop(loop.id, LoopWithType.LOOP_TYPE_LOOP);
|
||||
}
|
||||
if (labelUsed) {
|
||||
writer.append("loop" + loop.id + ":").newLine();
|
||||
}
|
||||
writer.append("for(");
|
||||
int p = 0;
|
||||
for (int i = 0; i < firstCommands.size(); i++) {
|
||||
@@ -93,8 +99,10 @@ public class ForItem extends LoopItem implements Block {
|
||||
}
|
||||
writer.unindent();
|
||||
writer.append("}").newLine();
|
||||
writer.append(":loop" + loop.id).newLine();
|
||||
writer.endLoop(loop.id);
|
||||
if (writer instanceof NulWriter) {
|
||||
LoopWithType loopOjb = ((NulWriter)writer).endLoop(loop.id);
|
||||
labelUsed = loopOjb.used;
|
||||
}
|
||||
return writer;
|
||||
}
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
*/
|
||||
package com.jpexs.decompiler.graph.model;
|
||||
|
||||
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
|
||||
import com.jpexs.decompiler.flash.helpers.GraphTextWriter;
|
||||
import com.jpexs.decompiler.graph.Block;
|
||||
import com.jpexs.decompiler.graph.GraphSourceItem;
|
||||
import com.jpexs.decompiler.graph.GraphTargetItem;
|
||||
@@ -51,7 +51,7 @@ public class IfItem extends GraphTargetItem implements Block {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected HilightedTextWriter appendTo(HilightedTextWriter writer, LocalData localData) {
|
||||
protected GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) {
|
||||
GraphTargetItem expr = expression;
|
||||
List<GraphTargetItem> ifBranch = onTrue;
|
||||
List<GraphTargetItem> elseBranch = onFalse;
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
*/
|
||||
package com.jpexs.decompiler.graph.model;
|
||||
|
||||
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
|
||||
import com.jpexs.decompiler.flash.helpers.GraphTextWriter;
|
||||
import com.jpexs.decompiler.graph.GraphSourceItem;
|
||||
import com.jpexs.decompiler.graph.GraphTargetItem;
|
||||
|
||||
@@ -34,7 +34,7 @@ public class IntegerValueItem extends GraphTargetItem {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected HilightedTextWriter appendTo(HilightedTextWriter writer, LocalData localData) {
|
||||
protected GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) {
|
||||
return writer.append("" + intValue);
|
||||
}
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
*/
|
||||
package com.jpexs.decompiler.graph.model;
|
||||
|
||||
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
|
||||
import com.jpexs.decompiler.flash.helpers.GraphTextWriter;
|
||||
import com.jpexs.decompiler.graph.GraphSourceItem;
|
||||
import com.jpexs.decompiler.graph.GraphTargetItem;
|
||||
import com.jpexs.decompiler.graph.SourceGenerator;
|
||||
@@ -34,7 +34,7 @@ public class ParenthesisItem extends GraphTargetItem {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected HilightedTextWriter appendTo(HilightedTextWriter writer, LocalData localData) {
|
||||
protected GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) {
|
||||
writer.append("(");
|
||||
value.toString(writer, localData);
|
||||
return writer.append(")");
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
*/
|
||||
package com.jpexs.decompiler.graph.model;
|
||||
|
||||
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
|
||||
import com.jpexs.decompiler.flash.helpers.GraphTextWriter;
|
||||
import com.jpexs.decompiler.graph.GraphTargetItem;
|
||||
|
||||
/**
|
||||
@@ -30,7 +30,7 @@ public class ScriptEndItem extends GraphTargetItem implements ExitItem {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected HilightedTextWriter appendTo(HilightedTextWriter writer, LocalData localData) {
|
||||
protected GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) {
|
||||
return writer;
|
||||
}
|
||||
|
||||
|
||||
@@ -16,8 +16,9 @@
|
||||
*/
|
||||
package com.jpexs.decompiler.graph.model;
|
||||
|
||||
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
|
||||
import com.jpexs.decompiler.flash.helpers.GraphTextWriter;
|
||||
import com.jpexs.decompiler.flash.helpers.LoopWithType;
|
||||
import com.jpexs.decompiler.flash.helpers.NulWriter;
|
||||
import com.jpexs.decompiler.graph.Block;
|
||||
import com.jpexs.decompiler.graph.GraphSourceItem;
|
||||
import com.jpexs.decompiler.graph.GraphTargetItem;
|
||||
@@ -33,6 +34,7 @@ public class SwitchItem extends LoopItem implements Block {
|
||||
public List<List<GraphTargetItem>> caseCommands;
|
||||
public List<GraphTargetItem> defaultCommands;
|
||||
public List<Integer> valuesMapping;
|
||||
private boolean labelUsed;
|
||||
|
||||
@Override
|
||||
public List<List<GraphTargetItem>> getSubs() {
|
||||
@@ -52,9 +54,18 @@ public class SwitchItem extends LoopItem implements Block {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected HilightedTextWriter appendTo(HilightedTextWriter writer, LocalData localData) {
|
||||
writer.startLoop(loop.id, LoopWithType.LOOP_TYPE_SWITCH);
|
||||
writer.append("loopswitch" + loop.id + ":").newLine();
|
||||
public boolean needsSemicolon() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) {
|
||||
if (writer instanceof NulWriter) {
|
||||
((NulWriter)writer).startLoop(loop.id, LoopWithType.LOOP_TYPE_SWITCH);
|
||||
}
|
||||
if (labelUsed) {
|
||||
writer.append("loopswitch" + loop.id + ":").newLine();
|
||||
}
|
||||
writer.append("switch(");
|
||||
switchedObject.toString(writer, localData);
|
||||
writer.append(")").newLine();
|
||||
@@ -91,8 +102,10 @@ public class SwitchItem extends LoopItem implements Block {
|
||||
}
|
||||
writer.unindent();
|
||||
writer.append("}").newLine();
|
||||
writer.append(":loop" + loop.id);
|
||||
writer.endLoop(loop.id);
|
||||
if (writer instanceof NulWriter) {
|
||||
LoopWithType loopOjb = ((NulWriter)writer).endLoop(loop.id);
|
||||
labelUsed = loopOjb.used;
|
||||
}
|
||||
return writer;
|
||||
}
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
*/
|
||||
package com.jpexs.decompiler.graph.model;
|
||||
|
||||
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
|
||||
import com.jpexs.decompiler.flash.helpers.GraphTextWriter;
|
||||
import com.jpexs.decompiler.graph.GraphSourceItem;
|
||||
import com.jpexs.decompiler.graph.GraphTargetItem;
|
||||
import com.jpexs.decompiler.graph.SourceGenerator;
|
||||
@@ -36,7 +36,7 @@ public class TernarOpItem extends GraphTargetItem {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected HilightedTextWriter appendTo(HilightedTextWriter writer, LocalData localData) {
|
||||
protected GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) {
|
||||
expression.toString(writer, localData);
|
||||
writer.append("?");
|
||||
onTrue.toString(writer, localData);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.jpexs.decompiler.graph.model;
|
||||
|
||||
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
|
||||
import com.jpexs.decompiler.flash.helpers.GraphTextWriter;
|
||||
import com.jpexs.decompiler.graph.GraphSourceItem;
|
||||
import com.jpexs.decompiler.graph.GraphTargetItem;
|
||||
|
||||
@@ -15,7 +15,7 @@ public class TrueItem extends GraphTargetItem {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected HilightedTextWriter appendTo(HilightedTextWriter writer, LocalData localData) {
|
||||
protected GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) {
|
||||
return writer.append("true");
|
||||
}
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
*/
|
||||
package com.jpexs.decompiler.graph.model;
|
||||
|
||||
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
|
||||
import com.jpexs.decompiler.flash.helpers.GraphTextWriter;
|
||||
import com.jpexs.decompiler.graph.GraphSourceItem;
|
||||
import com.jpexs.decompiler.graph.GraphSourceItemPos;
|
||||
import com.jpexs.decompiler.graph.GraphTargetItem;
|
||||
@@ -34,7 +34,7 @@ public abstract class UnaryOpItem extends GraphTargetItem implements UnaryOp {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected HilightedTextWriter appendTo(HilightedTextWriter writer, LocalData localData) {
|
||||
protected GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) {
|
||||
writer.append(operator);
|
||||
if (value != null) {
|
||||
if (value.precedence > precedence) {
|
||||
|
||||
@@ -16,8 +16,9 @@
|
||||
*/
|
||||
package com.jpexs.decompiler.graph.model;
|
||||
|
||||
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
|
||||
import com.jpexs.decompiler.flash.helpers.GraphTextWriter;
|
||||
import com.jpexs.decompiler.flash.helpers.LoopWithType;
|
||||
import com.jpexs.decompiler.flash.helpers.NulWriter;
|
||||
import com.jpexs.decompiler.graph.Block;
|
||||
import com.jpexs.decompiler.graph.GraphSourceItem;
|
||||
import com.jpexs.decompiler.graph.GraphTargetItem;
|
||||
@@ -32,15 +33,25 @@ import java.util.List;
|
||||
public class UniversalLoopItem extends LoopItem implements Block {
|
||||
|
||||
public List<GraphTargetItem> commands;
|
||||
private boolean labelUsed;
|
||||
|
||||
public UniversalLoopItem(GraphSourceItem src, Loop loop) {
|
||||
super(src, loop);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected HilightedTextWriter appendTo(HilightedTextWriter writer, LocalData localData) {
|
||||
writer.startLoop(loop.id, LoopWithType.LOOP_TYPE_LOOP);
|
||||
writer.append("loop" + loop.id + ":").newLine();
|
||||
public boolean needsSemicolon() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) {
|
||||
if (writer instanceof NulWriter) {
|
||||
((NulWriter)writer).startLoop(loop.id, LoopWithType.LOOP_TYPE_LOOP);
|
||||
}
|
||||
if (labelUsed) {
|
||||
writer.append("loop" + loop.id + ":").newLine();
|
||||
}
|
||||
writer.append("while(true)").newLine();
|
||||
writer.append("{").newLine();
|
||||
writer.indent();
|
||||
@@ -51,8 +62,10 @@ public class UniversalLoopItem extends LoopItem implements Block {
|
||||
}
|
||||
writer.unindent();
|
||||
writer.append("}").newLine();
|
||||
writer.append(":loop" + loop.id);
|
||||
writer.endLoop(loop.id);
|
||||
if (writer instanceof NulWriter) {
|
||||
LoopWithType loopOjb = ((NulWriter)writer).endLoop(loop.id);
|
||||
labelUsed = loopOjb.used;
|
||||
}
|
||||
return writer;
|
||||
}
|
||||
|
||||
|
||||
@@ -16,8 +16,9 @@
|
||||
*/
|
||||
package com.jpexs.decompiler.graph.model;
|
||||
|
||||
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
|
||||
import com.jpexs.decompiler.flash.helpers.GraphTextWriter;
|
||||
import com.jpexs.decompiler.flash.helpers.LoopWithType;
|
||||
import com.jpexs.decompiler.flash.helpers.NulWriter;
|
||||
import com.jpexs.decompiler.graph.Block;
|
||||
import com.jpexs.decompiler.graph.GraphSourceItem;
|
||||
import com.jpexs.decompiler.graph.GraphTargetItem;
|
||||
@@ -30,6 +31,7 @@ public class WhileItem extends LoopItem implements Block {
|
||||
|
||||
public List<GraphTargetItem> expression;
|
||||
public List<GraphTargetItem> commands;
|
||||
private boolean labelUsed;
|
||||
|
||||
@Override
|
||||
public List<List<GraphTargetItem>> getSubs() {
|
||||
@@ -45,9 +47,13 @@ public class WhileItem extends LoopItem implements Block {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected HilightedTextWriter appendTo(HilightedTextWriter writer, LocalData localData) {
|
||||
writer.startLoop(loop.id, LoopWithType.LOOP_TYPE_LOOP);
|
||||
writer.append("loop" + loop.id + ":").newLine();
|
||||
protected GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) {
|
||||
if (writer instanceof NulWriter) {
|
||||
((NulWriter)writer).startLoop(loop.id, LoopWithType.LOOP_TYPE_LOOP);
|
||||
}
|
||||
if (labelUsed) {
|
||||
writer.append("loop" + loop.id + ":").newLine();
|
||||
}
|
||||
writer.append("while(");
|
||||
for (int i = 0; i < expression.size(); i++) {
|
||||
if (expression.get(i).isEmpty()) {
|
||||
@@ -68,8 +74,10 @@ public class WhileItem extends LoopItem implements Block {
|
||||
}
|
||||
writer.unindent();
|
||||
writer.append("}").newLine();
|
||||
writer.append(":loop" + loop.id);
|
||||
writer.endLoop(loop.id);
|
||||
if (writer instanceof NulWriter) {
|
||||
LoopWithType loopOjb = ((NulWriter)writer).endLoop(loop.id);
|
||||
labelUsed = loopOjb.used;
|
||||
}
|
||||
return writer;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user