⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 codetable.java

📁 非常好的编译源代码 将一个l语言转换为中间代码 java版本
💻 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 + -