91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

一、實驗目的 實現一個的中間代碼生成程序,識別用戶輸入的關于標識符與整數的含加法、乘法的算術表達式并輸出匯編指令序列。 二、實驗主要內容 1、本次實驗表達式文法如下: 0) S->E 1) E->E+E 2) E->E*E 3) E->(E) 4) E->i 2、LR分析表: 狀態 ACTION GOTO + * ( ) i # E 0     S2   S3   1 1 S4 S5       acc   2     S2   S3   6 3 r4 r4   r4   r4   4     S2   S3   7 5     S2   S3   8 6 S4 S5   S9       7 r1 S5   r1   r1   8 r2 r2   r2   r2   9 r3 r3   r3   r3   3、要求輸入關于標識符與整數的含加法、乘法的算術表達式,輸出對應的匯編語言序列; 4、只考慮僅含一個寄存器的情形,且表達式中不存在跳轉匯編指令和標號;

資源截圖

代碼片段和文件信息

import?java.io.BufferedReader;
import?java.io.IOException;
import?java.io.InputStreamReader;
import?java.util.ArrayList;
import?java.util.List;
import?java.util.Stack;


public?class?LR?{
private?int[][]?ELR={{-1-12-13-11}
{45-1-1-10-1}
{-1-12-13-16}
{104104-1104-1104-1}
{-1-12-13-17}
{-1-12-13-18}
{45-19-1-1-1}
{1015-1101-1101-1}
{102102-1102-1102-1}
{103103-1103-1103-1}};
private?List?symbol=new?ArrayList<>();
private?Stack?stateStack=new?Stack<>();
private?Stack?symbolStack=new?Stack<>();
private?String?statement;
private?int?length=0;
private?class?Sym{
String?name;
int?type;
public?Sym(String?nameint?type){
this.name=name;
this.type=type;
}
public?String?getName()?{
return?name;
}
};
private?List?symTable=new?ArrayList<>(100);
private?class?object{
String?action;
String?arg1;
String?arg2;
public?object(String?actionString?arg1String?arg2){
this.action=action;
this.arg1=arg1;
this.arg2=arg2;
}
public?void?print(){
if(arg1==“r0“){
System.out.println(action+“??r0??“+symTable.get(Integer.parseInt(arg2)-1).getName());

}else?if(arg2==“r0“){
System.out.println(action+“??“+symTable.get(Integer.parseInt(arg1)-1).getName()+“??r0“);
}else{
System.out.println(action+“??“+symTable.get(Integer.parseInt(arg1)-1).getName()+“??“+symTable.get(Integer.parseInt(arg2)-1).getName());

}
}
};
private?Listject>?objectCode=new?ArrayList<>(100);
private??int?tempCount=0;
private?int?symCount=0;

public?LR(String?expression){
statement=expression+‘#‘;
symbol.add(‘+‘);
symbol.add(‘*‘);
symbol.add(‘(‘);
symbol.add(‘)‘);
symbol.add(‘i‘);
symbol.add(‘#‘);
symbol.add(‘E‘);
stateStack.push(0);
symbolStack.push(‘#‘);
length=statement.length();
}
private?void?analysisStatement()?throws?Exception{
int?index=0;
while(index int?start=index;
if(statement.charAt(index)>=‘0‘&&statement.charAt(index)<=‘9‘){
index++;
while(statement.charAt(index)>=‘0‘&&statement.charAt(index)<=‘9‘){
index++;
}
symTable.add(symCount?new?Sym(statement.substring(start?index)?0));
symCount++;
analysisStack(‘i‘);
continue;
}
if((statement.charAt(index)>=‘a‘&&statement.charAt(index)<=‘z‘)||(statement.charAt(index)>=‘A‘&&statement.charAt(index)<=‘Z‘)){
index++;
while((statement.charAt(index)>=‘0‘&&statement.charAt(index)<=‘9‘)||(statement.charAt(index)>=‘a‘&&statement.charAt(index)<=‘z‘)||(statement.charAt(index)>=‘A‘&&statement.charAt(index)<=‘Z‘)){
index++;
}
symTable.add(symCount?new?Sym(statement.substring(start?index)?1));
symCount++;
analysisStack(‘i‘);
continue;
}
if(statement.charAt(index)==‘+‘||statement.charAt(index)==‘*‘||statement.charAt(index)==‘(‘||state

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????6579??2012-12-28?23:44??LR.java

評論

共有 條評論