📄 codetable.java
字号:
/*
*@author yiminghe,创建日期 : 2006-5-28
*
* Email:yiming_water@hotmail.com
*/
package parser;
import java.util.ArrayList;
public class CodeTable {
//全局,下一条生成代码的条数
public static int nextquad = 1;
//所有生成的四元式
private ArrayList codes = new ArrayList();
// 生成代码四元式
public void gen(String op, String arg1, String arg2, String dest) {
MiddleCode t = new MiddleCode(op, arg1, arg2, dest);
codes.add(t);
System.out.println(nextquad + " : " + t.toString());
nextquad++;
}
/**
* @docRoot 数组链表
* @param list1 ,list2 所合并的两个链表
* @return 合并后链表的表头
*/
public int merge(int list1, int list2) {
//无需链接
if(list1 == 0 && list2 == 0 )
return 0;
//保证从非空的链开始
if(list1==0) {
list1=list2;
list2=0;
}
//list1 链接 list2
int pre = 0;
int cur = list1;
while (cur != 0) {
pre = cur;
cur = Integer.parseInt(((MiddleCode) codes.get(cur - 1)).dest);
}
((MiddleCode) codes.get(pre - 1)).dest = list2 + "";
return list1;
}
/**
* @docRoot 四元式 目的地回填
* @param list 回填链表的表头
* @param quad 回填的值
*/
public void backpath(int list, int quad) {
int cur = list;
String strquad=quad+"";
int next=cur;
while (next != 0) {
next = Integer.parseInt(((MiddleCode) codes.get(cur - 1)).dest);
((MiddleCode) codes.get(cur - 1)).dest=strquad+"";
cur=next;
}
}
//输出
public void print() {
System.out.println();
System.out.println("**********经过回填后 :**************");
System.out.println();
for(int i=0;i<codes.size();i++)
System.out.println((i+1)+" : "+codes.get(i));
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -