编译原理语法分析算术表达式.doc_第1页
编译原理语法分析算术表达式.doc_第2页
编译原理语法分析算术表达式.doc_第3页
编译原理语法分析算术表达式.doc_第4页
编译原理语法分析算术表达式.doc_第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 ActionListenerJFrame 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=65&str.charAt(i)=97&str.charAt(i)=122)|(str.charAt(i)=_)i+;f=true;if(f)i-;return f;public boolean is_digital() boolean f=false; if(i=48&str.charAt(i)=48&str.charAt(i)=57)|str.charAt(i)=.) i+; f=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 fa

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论