资源预览内容
第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
亲,该文档总共5页全部预览完了,如果喜欢就下载吧!
资源描述
package 语法分析;public class displymain public static void main(String args) new frame(); package 语法分析;import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; public class frame implements ActionListener JFrame frame1; JLabel L1,L2; JButton bt,bt2; JTextField input,result; top_down_grammar a =new top_down_grammar(); public frame() frame1=new JFrame(“); input=new JTextField(20); result=new JTextField(20); L1=new JLabel(“请输入表达式以#结束“); L2=new JLabel(“结果是:“); bt=new JButton(“语法分析“); bt2=new JButton(“关闭“); frame1.setTitle(“递归下降子程序分析语法“); frame1.setLayout(new GridLayout(3,1); frame1.add(L1); frame1.add(input); frame1.add(L2); frame1.add(result); frame1.add(bt); frame1.add(bt2); bt.addActionListener(this); bt2.addActionListener(this); frame1.setSize(500, 500); frame1.setVisible(true); public void actionPerformed(ActionEvent e) a.i=0; a.x.str=input.getText();if(e.getActionCommand()=“语法分析“) if(a.E_Production() result.setText(“符合语法要求“); else result.setText(“不符合语法要求“); if(e.getActionCommand()=“关闭“) frame1.dispose(); package 语法分析;public class Lex String str=“;int i; /int j=0;public char lex(int j) i=j; if(is_identifiers_key() return 2; if(is_digital() return 1; if(is_oper() return str.charAt(i);return 0; public boolean is_identifiers_key() boolean f=false; /c2=str.charAt(i);while(i=65f=true; /c=(str.charAt(i);if(f)i-;return f; return false; public boolean is_oper() / c2=str.charAt(i); if(istr.length()if(str.charAt(i)=(|str.charAt(i)=)|str.charAt(i)=+|str.charAt(i)=- |str.charAt(i)=*|str.charAt(i)=/|str.charAt(i)=#) return true;return false; package 语法分析; public class top_down_grammar char ch; int i=0; Lex x=new Lex(); public boolean E_Production() ch=x.lex(i); if(ch=+ |ch=-) i=x.i;i+;ch=x.lex(i); if(!T_Production() return false;if(!G_Production() return false;return true; public boolean T_Production() if( !F_Production() return false; if(!S_Production() return false; return true; public boolean F_Production() if(ch=() i=x.i; i+;ch=x.lex(i); if(E_Production() return false; if(ch=) i=x.i; i+;ch=x.lex(i); return true; else return false; if(ch=1|ch=2) i=x.i; i+;ch=x.lex(i); return true; else return false; public boolean G_Production() if(ch=+) i=x.i; i+;ch=x.lex(i); if(!T_Production() return false; if(!G_Production() return false; return true; else if(ch=-) i=x.i; i+;ch=x.lex(i); if(!T_Production() return false; if(G_Production() return false; return true; else if(ch=)|ch=#) return true; return false; public boolean S_Production() if(ch=*) i=x.i; i+;ch=x.lex(i); if(!F_Production() return false; if(!S_Production() return false; return true; else if(ch=/) i=x.i; i+;ch=x.lex(i); if(!F_Production() return false; if(!S_Production() return false; return true; else if(ch=+|ch=-|ch=#|ch=) if(ix.str.length() else return false; return true; return false;
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号