[计算机软件及应用]编译原理计算器报告.doc
《[计算机软件及应用]编译原理计算器报告.doc》由会员分享,可在线阅读,更多相关《[计算机软件及应用]编译原理计算器报告.doc(37页珍藏版)》请在三一办公上搜索。
1、编译原理课程设计2一、 题目:计算器设计(运用词法分析&语法分析方法)二、 运行环境:JAVA jdk1.6.0_21 三、 设计思路:1、为每种可能识别出来的合法单词创建一个类,类的属性包括该单词的各别码及值。2、构建异常类,以实现计算器的容错性能。3、构建一个词法分析类,用之提取单词。4、构建表达式中各单词间的优先关系表。5、构建一个语法分析类,对表达式进行规约。此类调用词法类获取单词,查询优先关系表进行规约操作。6、构建一个计算类,调用语法分析类以实现计算。7、构建一个GUI类,设计好操作界面,并内置计算类,以实现界面操作计算功能。系统总体调用关系视图如下:四、 基本工具UML及JAVA
2、语言五、 程序源代码:1、 实现GUI的mainWindow类代码package gui;import parser.Calculator;import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.text.*;public class mainWindow /extends JFrame JFrame mainFrame; JTextField inputField; JTextField outputField; JButton button = new JButton30; String s=7,
3、8,9,4,5,6,1,2,3,0,.,=,backspace,c,+,e,+/-,-,sqrt,sin,cos,*,&,|,/,%,(,); int i; JPanel p1,p2,p3,p4,p5,p6,p7,p8; JLabel l1,l2; JMenuBar menubar; JMenuItem item1,item2,item3,item4,item5,item6,item7; public void display() mainFrame = new JFrame(计算器2010 Beta1); mainFrame.addWindowListener(new WindowAdapt
4、er() public void windowClosing(WindowEvent e) int i = JOptionPane.showConfirmDialog(null,是否确定退出系统,退出确认对话框,JOptionPane.YES_NO_CANCEL_OPTION);if (i = 0) System.exit(0); ); mainFrame.getContentPane().setLayout(new BorderLayout(); mainFrame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); JPanel io
5、Panel = new JPanel(); mainFrame.getContentPane().add(ioPanel); mainFrame.add(ioPanel); ioPanel.setLayout(new BorderLayout(); menubar = new JMenuBar(); mainFrame.setJMenuBar(menubar); JMenu menu1 = new JMenu(编辑); JMenu menu2 = new JMenu(操作); JMenu menu3 = new JMenu(帮助); menubar.add(menu1); menubar.ad
6、d(menu2); menubar.add(menu3); item1 = new JMenuItem(复制,C); item2 = new JMenuItem(粘贴,V); item3 = new JMenuItem(剪切,X); item4 = new JMenuItem(计算,G); item5 = new JMenuItem(清空所有,R); item6 = new JMenuItem(退出,Q); item7 = new JMenuItem(关于计算器,H); menu1.add(item1); menu1.add(item2); menu1.add(item3); menu2.ad
7、d(item4); menu2.add(item5); menu2.addSeparator(); menu2.add(item6); menu3.add(item7); /给菜单项注册监听器 item1.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) outputField.setEnabled(true);outputField.selectAll();outputField.copy();outputField.setEnabled(false); ); item2.add
8、ActionListener(new ActionListener() public void actionPerformed(ActionEvent e) inputField.setText();inputField.paste(); ); item3.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) inputField.selectAll();inputField.cut(); ); item4.addActionListener(new ActionListener()
9、public void actionPerformed(ActionEvent e) button11.doClick(); ); item5.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) inputField.setText(); outputField.setText(); ); item6.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) int i = JO
10、ptionPane.showConfirmDialog(null,是否确定退出系统,退出确认对话框,JOptionPane.YES_NO_CANCEL_OPTION);if (i = 0) System.exit(0); ); item7.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) JOptionPane.showMessageDialog(mainFrame, getHelpMessage(); ); Font font = new Font(Arial,Font.BOLD
11、,24); l1 = new JLabel(算术表达式:); l2 = new JLabel(计算结果:); inputField = new JTextField(30); inputField.setFont(font); inputField.addKeyListener(new KeyAdapter() public void keyPressed(KeyEvent ev) if (ev.getKeyChar() = KeyEvent.VK_ENTER) button11.doClick();); outputField = new JTextField(30); outputFiel
12、d.setFont(font); outputField.setEnabled(false); p3 = new JPanel(new FlowLayout(); p4 = new JPanel(new FlowLayout(); p1 = new JPanel(new GridLayout(2,2,10,10); p3.add(l1); p3.add(inputField); p4.add(l2); p4.add(outputField); p1.add(p3); p1.add(p4); ioPanel.add(p1,North); p2 = new JPanel(new GridLayou
13、t(1,2,20,10); p5 = new JPanel(new BorderLayout(); p6 = new JPanel(new GridLayout(4,3,10,10); p7 = new JPanel(new FlowLayout(); p8 = new JPanel(new GridLayout(4,4,10,10); p2.add(p5); p2.add(p8); p5.add(p6,Center); p5.add(p7,South); Font fontb = new Font(Arial,Font.BOLD,15); for(i=0;i12;i+) buttoni=ne
14、w JButton(si); buttoni.setFont(fontb); buttoni.addActionListener(new Act(); p6.add(buttoni); for(i=12;i14;i+) buttoni=new JButton(si); buttoni.setFont(fontb); buttoni.addActionListener(new Act(); p7.add(buttoni); for(i=14;i0) inputField.setText(inputField.getText().substring(0,inputField.getText().l
15、ength()-1); else if(e.getActionCommand()=+/-) getResult(); String ss = outputField.getText(); if (Character.isDigit(ss.charAt(0) outputField.setText(-+ss); else if (ss.charAt(0) = -) outputField.setText(ss.substring(1); else if(e.getActionCommand()=) getResult(); else inputField.setText(inputField.g
16、etText()+e.getActionCommand(); public void getResult() try Calculator calculator = new Calculator(); double result = calculator.calculate(inputField.getText().trim(); /String str = String.valueof(result); outputField.setText(+result); catch (Exception ex) outputField.setText(ex.getMessage(); String
17、getHelpMessage() String msg = ; msg += ttCopyright(C) 2009n; msg += tt20072341 & 20072343n; return msg; 2、 计算类Calculatorpackage parser;import exceptions.*;public class Calculator public double calculate(String expression) throws ExpressionException Parser parser = new Parser(expression+#); parser.gu
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机软件及应用 计算机软件 应用 编译 原理 计算器 报告
链接地址:https://www.31ppt.com/p-4561932.html