资源简介
北邮编译原理实验二:语法分析程序的设计与实现,源代码和实验报告
代码片段和文件信息
package parsing;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
public class ForecastAnalysis {
private static ArrayDeque mStack;
private static ArrayDeque mQuene;
private static Parsing solution = new Parsing();
public static void initStackAndQuene() throws IOException {
mStack = new ArrayDeque<>();
mStack.push(‘$‘);
mStack.push(‘E‘);
mQuene = new ArrayDeque<>();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println(“请输入你要进行语法分析的字符串,字符串只能保存数字和+,-,*,/,(,)六个符号:“);
String str = br.readLine();
String inputStr = ““;
for(int i=0;i {
if(str.charAt(i)<=‘9‘&&str.charAt(i)>=‘0‘)
inputStr+=“n“;
else inputStr+=(““+str.charAt(i));
}
//String inputStr = “n+n/n“;
for(int i=0;i {
mQuene.offer(inputStr.charAt(i));
}
mQuene.offer(‘$‘);
//System.out.println(mStack);
//System.out.println(mQuene);
}
public static void judgeCompareResult(char achar b) {
//如果栈顶非终结符
if(!judgeEndChar(a))
{
//查字母表是error
if(Parsing.analysisTable[solution.chartMap.get(a)][solution.chartMap.get(b)].equals(“error“))
{
System.out.print(“出错,M[“+a+““+b+“]为error,向前移动向前指针,舍去输入符号“+mQuene.poll()+“\t“);
}
//查字母表是synch
else if(Parsing.analysisTable[solution.chartMap.get(a)][solution.chartMap.get(b)].equals(“synch“)){
System.out.print(“出错,M[“+a+““+b+“]为synch,栈弹出“+mStack.pop()+“\t“);
}
//查字母表是推导出ℇ的文法
else if(Parsing.analysisTable[solution.chartMap.get(a)][solution.chartMap.get(b)].charAt(1) == ‘ℇ‘){
String aString = new String(Parsing.analysisTable[solution.chartMap.get(a)][solution.chartMap.get(b)].toCharArray() 1
Parsing.analysisTable[solution.chartMap.get(a)][solution.chartMap.get(b)].length()-1);
System.out.print(Parsing.analysisTable[solution.chartMap.get(a)][solution.chartMap.get(b)].charAt(0)+“-->“
+aString+“\t“);
mStack.pop();
}
else{
String aString = new String(Parsing.analysisTable[solution.chartMap.get(a)][solution.chartMap.get(b)].toCharArray() 1
Parsing.analysisTable[solution.chartMap.get(a)][solution.chartMap.get(b)].length()-1);
System.out.print(Parsing.analysisTable[solution.chartMap.get(a)][solution.chartMap.get(b)].charAt(0)+“-->“
+aString+“\t“);
mStack.pop();
String bString = Parsing.analysisTable[solution.chartMap.get(a)][solution.chartMap.get(b)];
for(int i=bString.length()-1;i>=1;i--)
{
mStack.push(bString.charAt(i));
}
}
}
else
{
if(a != b)//栈顶终结符号和当前输入符号不匹配
{
mStack.pop();
System.out.print(“栈顶符号“+a+“和当前输入符号“+b+“不匹配弹出栈顶符号“+“\t“);
}
else//栈顶终结符哈和当前输入符号匹配
{
mStack.pop();
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4959 2016-11-19 11:41 ForecastAnalysis.java
文件 7433 2016-11-19 12:16 Parsing.java
文件 1123914 2016-11-19 12:33 瀹為獙浜岋細璇硶鍒嗘瀽绋嬪簭鐨勮璁′笌瀹炵幇.pdf
目录 0 2016-11-19 12:35 __MACOSX\
文件 187 2016-11-19 12:33 __MACOSX\._瀹為獙浜岋細璇硶鍒嗘瀽绋嬪簭鐨勮璁′笌瀹炵幇.pdf
相关资源
- 词法分析程序和语法分析程序 编译原
- 为PL/0语言建立一个语法分析程序BLO
- 语法分析程序的设计与实现
- 算符优先语法分析程序
- LL(1)文法自动生成语法分析程序的
- 赋值语句的语法分析程序
- 语法分析程序的设计与实验
- 编译原理预测分析法语法分析程序
- 基于预测分析表法的语法分析程序
- LL(1)语法分析程序
- 自顶向下预测分析语法分析程序
- 实验二 递归下降语法分析程序设计
- 赋值语句词法和语法分析程序
- 编译原理 递归下降语法分析程序代码
- LL(1)语法分析程序实验报告
- 赋值语句的语法分析程序递归下降法
- 北邮编译原理课程设计
- 北邮编译原理实验 语法分析
- 北邮编译原理第二次实验报告LL(1)
- 编译原理实习设计 语法分析程序
评论
共有 条评论