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

上传人:tia****nde 文档编号:36882915 上传时间:2018-04-03 格式:DOC 页数:5 大小:28KB
返回 下载 相关 举报
编译原理语法分析算术表达式_第1页
第1页 / 共5页
编译原理语法分析算术表达式_第2页
第2页 / 共5页
编译原理语法分析算术表达式_第3页
第3页 / 共5页
编译原理语法分析算术表达式_第4页
第4页 / 共5页
编译原理语法分析算术表达式_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《编译原理语法分析算术表达式》由会员分享,可在线阅读,更多相关《编译原理语法分析算术表达式(5页珍藏版)》请在金锄头文库上搜索。

1、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; JBu

2、tton 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(“递归下降子程序分析语法“

3、); 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=

4、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() retu

5、rn 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.c

6、harAt(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() ret

7、urn 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 tru

8、e; 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

9、; 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;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 试题/考题

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号