已经支持
还在开发
没有支持的还有一大堆,大体的框子已经写完了,剩下的大部分是体力活了。
收获
希望大佬帮忙
哪位大佬有类似编译原理或者编译器开发的交流群或者社区,需要理论指导的时候,十分抓狂。
龙书/虎书/鲸书理论看起来太枯燥。
成果
源码
import java.nio.channels.NotYetBoundException;
import java.util.HashMap;
import java.util.concurrent.ExecutionException;
public class TryCatchNestedInCatch {
public static void demo(String name, String ye) {
try {
int mmm = 1000;
} catch (Exception e) {
// String e3 = "Exception";
try {
int mmm1 = 1000;
//demo2();
} catch (NotYetBoundException e100) {
String e1 = "NotYetBoundException";
// System.out.println(e1);
} catch(Exception e1) {
String e2 = "Exception";
// System.out.println(e2);
} finally {
int mmm2 = 2000;
// System.out.println(mmm2);
}
// System.out.println(e3);
} finally {
int ccc = 2000;
// System.out.println(ccc);
}
}
}
反编译结果:
import java.nio.channels.NotYetBoundException;
import java.util.HashMap;
import java.util.concurrent.ExecutionException;
public class TryCatchNestedInCatch {
public static void demo(String var_0_0, String var_1_1) {
exception { // block_id: 1 range: 0 - 35 parent_id: 0
try { // block_id: 2 range: 0 - 4 parent_id: 1
int var_2_2(1) = 1000;
goto 74;
}
catch { // block_id: 3 range: 5 - 30 parent_id: 1
exception { // block_id: 5 range: 6 - 27 parent_id: 3
try { // block_id: 6 range: 6 - 10 parent_id: 5
int var_3_4(1) = 1000;
goto 57;
}
catch { // block_id: 7 range: 11 - 16 parent_id: 5
String var_4_9(1) = "NotYetBoundException";
goto 57;
}
catch { // block_id: 8 range: 17 - 22 parent_id: 5
String var_4_12(1) = "Exception";
goto 57;
}
finally { // block_id: 9 range: 23 - 27 parent_id: 5
int var_6_15(1) = 2000;
athrow(var_5_14);
}
}
goto 74;
}
finally { // block_id: 4 range: 31 - 35 parent_id: 1
int var_8_7(1) = 2000;
}
}
}
}
源码:
import java.util.Random;
public class Or {
public static int a1;
public static int a2;
public static int a3;
public int b1;
public int b2;
public int b3;
public static void main(String[] args)
{
Random r = new Random();
boolean q = 100 r.nextInt() && r.nextInt() > 0;
int m = 200000;
boolean s = r.nextInt() > 20 && r.nextInt() r.nextInt() && r.nextInt() > 0;
}
public void field()
{
Random r = new Random();
int[] d = {0, 0, 2, 3};
boolean q = 100 r.nextInt() && r.nextInt() > 0;
boolean cd = 100 r.nextInt() && r.nextInt() > 0;
}
public boolean define_or()
{
int m = 0;
int k = 0;
int n = 0;
int z = 0;
Random r = new Random();
boolean dddd =
(m = 20) > 100 || (
30 > ((r.nextInt() > 100 && r.nextInt() != 1000) ? (100 & r.nextInt()) : 20) ?
(Or.a1 = this.b1 = m = k = n = 100 > r.nextInt() ? r.nextInt() : 0) :
// (100 > r.nextInt() ? r.nextInt() : 0) :
(r.nextInt() > 2000 ? 100 : 20)
) 1000 ? 0 : 1);
System.out.println(m);
System.out.println(k);
System.out.println(n);
return true;
}
}
反编译结果:
import java.util.Random;
import java.io.PrintStream;
public class Or {
public static int a1;
public static int a2;
public static int a3;
public int b1;
public int b2;
public int b3;
public static void main(String[] var_0_0) {
Random var_1_1(1) = new Random();
int var_2_6(1) = 100 var_1_1.nextInt() && var_1_1.nextInt() > 0 ? 0 : 1;
int var_3_3(1) = 200000;
int var_4_5(1) = var_1_1.nextInt() > 20 && var_1_1.nextInt() var_0_0.nextInt() && var_0_0.nextInt() > 0 ? 0 : 1;
}
public void field() {
Random var_1_1(1) = new Random();
int[] var_2_2(1) = new int[4]{0, 0, 2, 3};
int var_3_6(1) = 100 var_1_1.nextInt() && var_1_1.nextInt() > 0 ? 0 : 1;
int var_4_5(1) = 100 var_1_1.nextInt() && var_1_1.nextInt() > 0 ? 0 : 1;
}
public boolean define_or() {
int var_1_1(1) = 0;
int var_2_2(1) = 0;
int var_3_3(1) = 0;
int var_4_4(1) = 0;
Random var_5_5(1) = new Random();
int var_6_7(1) = var_1_1 = 20 > 100 || 30 > var_5_5.nextInt() > 100 && var_5_5.nextInt() != 1000 ? 20 : 100 & var_5_5.nextInt() ? var_5_5.nextInt() > 2000 ? 20 : 100 : 100 > var_5_5.nextInt() ? Or.a1 = this.b1 = var_1_1 = var_2_2 = var_3_3 = 0 : Or.a1 = this.b1 = var_1_1 = var_2_2 = var_3_3 = var_5_5.nextInt() 1000 ? var_4_4 = 1 : var_4_4 = 0 ? 0 : 1;
System.out.println(var_1_1);
System.out.println(var_2_2);
System.out.println(var_3_3);
return true;
}
}