编译原理语法分析 算术表达.docVIP

  • 3
  • 0
  • 约4.15千字
  • 约 5页
  • 2017-02-02 发布于湖北
  • 举报
package 语法分析; public class displymain { public static void main(String args[]) { new frame(); } } 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((istr.length()((str.charAt(i)=65str.charAt(i)=90)||(str.charAt(i)=97str.charAt(i)=122)||(str.charAt(i)==_)))) { i++; f=true; } if(f) i--; return f; } public boolean is_digital() { boolean f=false; if(istr.length()str.charAt(i)=48str.charAt(i)=57) { while(((str.charAt(i)=48str.charAt(i)=57)||str.charAt(i)==.)) { i++; f=true; } //c=(str.charAt(i)); if(f) i--; return f; } return false; } publi

文档评论(0)

1亿VIP精品文档

相关文档