资源简介
使用算符优先分析算法分析下面的文法:E’ → #E#E → E+T | TT → T*F | FF → P^F | PP → (E) | i其中i可以看作是一个终结符,无需作词法分析。具体要求如下:1、如果输入符号串为正确句子,显示分析步骤,包括分析栈中的内容、优先关系、输入符号串的变化情况;2、如果输入符号串不是正确句子,则指示出错位置。
代码片段和文件信息
package s;
import javax.swing.*;
import java.awt.Font;
import java.awt.event.*;
public class Jsuanfu extends Jframe implements ActionListener{
private JTextArea ta=new JTextArea(1850);;
private JTextField tf;
private JButton jb1;
private JButton jb2;
private JLabel jl1;
private JLabel jl2;
char[] a=new char[50];
char[] s=new char[50];
int jkzp=0;
char m;
boolean f=true;
String st1=““st2=““st3=““;
public int table[][]={{2111122}
{2211122}
{2211122}
{222-1-122}
{111110-1}
{222-1-122}
{11111-10}};
public Jsuanfu(){
super(“算符优先分析器“);
this.setSize(600500);
this.setLocation(200150);
this.setLayout(null);
tf=new JTextField(30);
jb1=new JButton(“清空文本区“);
jb2=new JButton(“优先分析“);
jl1=new JLabel(“输入字符串:“);
jl2=new JLabel(“分析结果:“);
jl1.setFont(new Font(“楷书“Font.BOLD14));
jl2.setFont(new Font(“楷书“Font.BOLD14));
jl1.setSize(10025);
jl1.setLocation(1010);
this.add(jl1);
tf.setSize(400 25);
tf.setLocation(12010);
this.add(tf);
jl2.setSize(9025);
jl2.setLocation(10 40);
this.add(jl2);
ta.setEditable(false);
JScrollPane sc=new JScrollPane(taJScrollPane.VERTICAL_SCROLLBAR_ALWAYS
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
sc.setSize(580350);
sc.setLocation(10 70);
this.add(sc);
jb1.setBounds(10043010025);
jb2.setBounds(40043010025);
this.add(jb1);
this.add(jb2);
ta.append(“ 步骤“+“\t“+“栈“+“\t“+“当前符号“+“\t“+“剩余输入串“+“\t“+“移进或归约“+“\n“);
jb1.addActionListener(this);
jb2.addActionListener(this);
this.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);
this.setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==jb1)
if(JOptionPane.showConfirmDialog(null“确定清空吗?“ “提示!“JOptionPane.YES_NO_OPTION)==JOptionPane.YES_OPTION)
{
ta.setText(““);
tf.setText(““);
ta.append(“ 步骤“+“\t“+“栈“+“\t“+“当前符号“+“\t“+“剩余输入串“+“\t“+“移进或归约“+“\n“);
p=0;
f=true;
}
if(e.getSource()==jb2)
{
int n1=0;
z=0;
String st=tf.getText();
char[] b=new char[st.length()];
for(int l=0;l {
b[l]=st.charAt(l);
a[l]=st.charAt(l);
n1=l;
}
for(int d=n1+1;d<50;d++)
a[d]=‘#‘;
k=1;
s[k]=‘#‘;
while(z {
if(a[z]==‘+‘||a[z]==‘*‘||a[z]==‘^‘||a[z]==‘i‘||a[z]==‘(‘||a[z]==‘)‘||a[z]==‘#‘)
e();
else
{
ta.append(“出错“);
f=false;
}
z++;
}
}
}
int ch(char b){
int t=-1;
switch(b)
{
case ‘+‘:t=0;break;
case ‘*‘:t=1;break;
case ‘^‘:t=2;break;
case ‘i‘:t=3;break;
case ‘(‘:t=4;break;
case ‘)‘:t=5;break;
case ‘#‘:t=6;
}
return t;
}
void e(){
if(
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 0 2008-05-19 19:37 算符优先分析器\.me
文件 5113 2008-05-22 15:49 算符优先分析器\.me
文件 26 2008-05-22 15:49 算符优先分析器\.me
文件 4828 2008-05-20 21:02 算符优先分析器\.me
文件 3854 2008-05-20 16:04 算符优先分析器\.me
文件 4877 2008-05-20 21:38 算符优先分析器\.me
文件 3677 2008-05-20 16:02 算符优先分析器\.me
文件 3764 2008-05-20 16:06 算符优先分析器\.me
文件 4737 2008-05-20 20:12 算符优先分析器\.me
文件 4801 2008-05-20 20:52 算符优先分析器\.me
文件 4328 2008-05-20 19:42 算符优先分析器\.me
文件 4686 2008-05-20 20:12 算符优先分析器\.me
文件 4830 2008-05-20 20:59 算符优先分析器\.me
文件 4848 2008-05-20 21:10 算符优先分析器\.me
文件 4875 2008-05-20 21:38 算符优先分析器\.me
文件 4966 2008-05-20 22:38 算符优先分析器\.me
文件 4821 2008-05-20 20:58 算符优先分析器\.me
文件 3882 2008-05-20 19:27 算符优先分析器\.me
文件 4764 2008-05-20 20:22 算符优先分析器\.me
文件 4875 2008-05-20 21:43 算符优先分析器\.me
文件 4853 2008-05-20 21:36 算符优先分析器\.me
文件 5250 2008-05-22 15:56 算符优先分析器\.me
文件 4853 2008-05-20 21:41 算符优先分析器\.me
文件 3767 2008-05-20 16:05 算符优先分析器\.me
文件 4966 2008-05-20 22:39 算符优先分析器\.me
文件 4087 2008-05-20 19:37 算符优先分析器\.me
文件 4001 2008-05-20 19:33 算符优先分析器\.me
文件 4817 2008-05-20 21:04 算符优先分析器\.me
文件 4842 2008-05-20 21:17 算符优先分析器\.me
文件 4848 2008-05-20 21:15 算符优先分析器\.me
............此处省略215个文件信息
相关资源
- 华中科技大学 编译原理 面向过程的
- 山东大学编译原理实验报告含代码
- Compiler_mean3tmp.rar
- 西安交通大学编译原理实验代码及报
- 编译原理第3版[刘铭][实验程序源代码
- 用Java做编译原理正规式转换成NFA.ra
- 编译原理课程设计含报告和可运行源
- 词法分析器实现java和c++
- 编译原理课程设计(附报告和可运行
- 现代编译原理虎书,包含c版和java版中
- 现代编译器的Java实现.(美)Andrew.W
- 编译原理java实现所需jar包-个人博客文
- 编译原理-虎书-龙书-鲸书
- java编写的LR语法分析器编译原理实验
- JAVA 编译原理 SLR(1)算法模拟器
- java 中间代码生成 编译原理
- 编译原理词法分析器 java版
- java 写的 用优先函数分析 数学表达式
- 符号串的最左和最右推导
- 编译原理词法分析器实现Java带界面源
- 编译原理综合实习 JavaCC实现 可翻译
- 编译原理 王生原 董渊 书后源代码
- 利用Java编写简单的C语言词法分析器
- Java实现PL0词法分析、语法分析、语义
- 语法分析器java实现
- 编译原理 词法分析 语法分析 Java版
- 词法程序设计——DFA模拟程序
- 编译原理 LL1语法分析器(JAVA写的)
- 使用直接分析法编制C语言子集的词法
- MiniC语言编译系统
评论
共有 条评论