全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验二 词法分析器的设计一、实验内容设计一个词法分析器程序,该程序能完成如下功能:输入的字符串中的单词有整数和以字母开头的标识符,分析器能识别出单词并区分是整数还是标识符,标识符中是否有while、do、if、then、else、begin、end、and、or、or等保留字。若单词是整数则输出整数的编码及数值,是标识符则判定是否为保留字,是保留字则将保留字及其对应的编码输出,否则输出标识符号及其编码。要求用JAVA语言、图形界面方式编程。(可参考实验指导书P110至P113)可以有如下约定:保留字if的编码为0,then为1,else为2,while为3,begin为4,do为5,end为6,and为39,or为40,not为41.整数的编码为57,标识符的编码为56.例如:若文本文件中的字符串为while do at a45 a+ 34 end 则输出(while,3), (do,5), (at,56), (a45,56), (a+,56), (34,57), (end,6)二、实验代码AnalysisOfMorphology.javapackage distinguish;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.io.BufferedInputStream;import java.io.File;import java.io.FileInputStream;import java.io.IOException;public class AnalysisOfMorphology extends JAppletprivate JFileChooser jfc = new JFileChooser(new File(.);private JTextArea jta1 = new JTextArea();private JTextArea jta2 = new JTextArea();private JButton jlb1 = new JButton(字符串的内容为:);private JButton jlb2 = new JButton(词法分析器分析结果为:);private JLabel fileName = new JLabel( Filename );private JTextField jtf = new JTextField(30);private JButton brower = new JButton(Brower);public AnalysisOfMorphology()JPanel p1 = new JPanel();p1.setLayout(new BorderLayout();p1.setBorder(BorderFactory.createEmptyBorder(5,5,5,10);p1.add(jlb1,BorderLayout.NORTH);p1.add(new JScrollPane(jta1), BorderLayout.CENTER);add(p1,BorderLayout.CENTER);JPanel p2 = new JPanel();p2.setLayout(new BorderLayout();p2.setBorder(BorderFactory.createEmptyBorder(5,5,5,10);p2.add(jlb2,BorderLayout.NORTH);p2.add(new JScrollPane(jta2), BorderLayout.CENTER);add(p2,BorderLayout.EAST);JPanel p3 = new JPanel();p3.setLayout(new BorderLayout();p3.add(fileName,BorderLayout.WEST);p3.add(jtf);p3.add(brower, BorderLayout.EAST);add(p3,BorderLayout.SOUTH);jtf.setText(C:/2.txt);brower.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)open(););jtf.addKeyListener(new KeyAdapter() public void keyPressed(KeyEvent e) if(e.getKeyChar()=KeyEvent.VK_ENTER ) /按回车键执行相应操作; String file = jtf.getText(); try BufferedInputStream in = new BufferedInputStream(new FileInputStream(file); byte b = new bytein.available(); in.read(b,0,b.length); jta1.append(new String(b,0,b.length); in.close(); catch (IOException e1) jta1.setText(Error opening ); );jlb2.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)String s = jta1.getText();jta2.setText(translateFigure(s););private String translateFigure(String string)String english = if,then,else,while,begin,do,end,and,or,not;int integer = 0,1,2,3,4,5,6,7,8,9;int figure = 0,1,2,3,4,5,6,39,40,41;String s = string;String str = ;String t = ;int n = 0;int j = 0;int k1 = 0;boolean flag = false;char ch = s.toCharArray(); for(int i = 0; i s.length(); i+) if(chi = |chi = .|chi = ,) t = s.substring(n, i); n = i+1; for(j = 0; j 10; j+) if(t.equals(englishj) str = str + ( + t + , + figurej + ) + , ; break; else if(t.substring(0,1).equals(+integerj) for(int k = 1; k t.length(); k+) for(k1 = 0; k1 =10) flag = false; break; if(flag) str = str + ( + t + , + 57 + ) + , ; else str = str + ( + t + , + -1 + ) + , ; break; if(j = 10) str = str + ( + t + , + 56 + ) + , ; str = str.substring(0, str.length()-3);return str;private void open()if(jfc.showOpenDialog(this) = JFileChooser.APPROVE_OPTION)open(jfc.getSelectedFile();private void open(File file)tryBufferedInputStream in = new BufferedInputStream(new FileInputStream(file);byte b = new bytein.available();in.read(b,0,b.length)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中共党员年终总结
- ICU无创血流动力学评估共识课件
- 4.6.1 运动旋量与螺旋运动
- 2026年陶瓷基复合材料行业分析报告及未来发展趋势报告
- 2026年输液泵测试仪行业分析报告及未来发展趋势报告
- 2026年平板电脑屏幕贴膜行业分析报告及未来发展趋势报告
- 急性肝衰竭神经系统并发症的评估与管理总结2026
- 2026年晶体谐振器行业分析报告及未来发展趋势报告
- 2026年锂电池电解液添加剂行业分析报告及未来发展趋势报告
- 2026年鞋底材料行业分析报告及未来发展趋势报告
- 国家事业单位招聘2025中国宋庆龄青少年科技文化交流中心招聘人员笔试历年参考题库典型考点附带答案详解
- 安徽省合肥市2026届高三下学期第二次教学质量检测政治卷及答案
- 共推生态墨脱建设方案
- 上海杉达学院《金融学基础》2025-2026学年期末试卷
- 2026安徽省交控建设管理有限公司校园招聘5人笔试参考题库附带答案详解
- GB/T 46940-2025中医药中医临床术语系统分类框架
- 生产型企业全套财务制度
- 数据安全培训协议
- 室内概念方案汇报
- 东方航空合同管理制度
- T/CHES 89-2022河湖生态流量保障实施方案编制技术导则
评论
0/150
提交评论