📄 stackvm.java
字号:
/*
* @(#)StackVM.java 1.0.0 05/13/2007
*
* Copyright 2007 Xuxt@buaa, No.34060520 All rights reserved.
*/
package com.king4solomon.homework.compiler.pvm;
import java.util.*;
import com.king4solomon.homework.compiler.core.*;
import com.king4solomon.homework.compiler.gui.*;
public class StackVM {
public StackUnit getUnit(int index) {
return stack.get(index);
}
public int getTypeOf(int index) {
return stack.get(index).type;
}
public String getValueOf(int index) {
return stack.get(index).value;
}
public StackUnit pop() {
int idx = stack.size() - 1;
StackUnit tmp = stack.remove(idx);
StackTable.removeRow();
return tmp;
}
public void push(StackUnit aUnit) {
stack.add(aUnit);
StackTable.addRow(new StackTableItem(stack.size() - 1, aUnit.type,
aUnit.value));
}
public void set(int index, StackUnit aUnit) {
stack.set(index, aUnit);
String tmp;
if(aUnit.type == ConstSet.INTEGER)tmp = "int";
else if(aUnit.type == ConstSet.CHARACTER)tmp = "char";
else if(aUnit.type == ConstSet.REAL)tmp = "float";
else if(aUnit.type == ConstSet.VOIDTYPE)tmp = "void";
else tmp = "unknown";
SourcePane.table.setValueAt(tmp, index, 1);
SourcePane.table.setValueAt(aUnit.value, index, 2);
SourcePane.table.updateUI();
}
public int getLength() {
return stack.size();
}
/**
* 释放序列号大于index的栈单元
* @param index
*/
public void free(int index) {
for (int idx = stack.size() - 1; idx > index; idx--){
stack.remove(idx);
StackTable.removeRow();
}
SourcePane.table.updateUI();
}
public static void clear(){
stack = new LinkedList<StackUnit>();
}
static LinkedList<StackUnit> stack = new LinkedList<StackUnit>();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -