ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:41.94KB ,
资源ID:8292589      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-8292589.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实验一词法分析文档格式.docx)为本站会员(b****3)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

实验一词法分析文档格式.docx

1、(一)准备:1.阅读课本有关章节,明确语言的语法,写出基本保留字、标识符、常数、运算符、分隔符和程序例。2.初步编制好程序。3.准备好多组测试数据。(二)上课上机:将源代码拷贝到机上调试,发现错误,再修改完善。第二次上机调试通过。(三)程序要求:程序输入/输出示例:(2,”main”)(5,”(“)(5,”)“)(5,”“)(1,”int”)(2,”a”)(5,”,”)(2,”b”)(5,”;”)(4,”=”)(3,”10”)(4,”+”)(3,”20”)(5,”“)如源程序为C语言。输入如下一段:main()int a,b;a = 10; b = a + 20;要求输出如右图。要求:识别保留

2、字:if、int、for、while、do、return、break、continue;单词种别码为1。其他的都识别为标识符;单词种别码为2。常数为无符号整形数;单词种别码为3。运算符包括:+、-、*、/、=、=、=、!= ;单词种别码为4。分隔符包括:,、;、(、); 单词种别码为5。以上为参考,具体可自行增删。(四)程序思路(仅供参考):这里以开始定义的C语言子集的源程序作为词法分析程序的输入数据。在词法分析中,自文件头开始扫描源程序字符,一旦发现符合“单词”定义的源程序字符串时,将它翻译成固定长度的单词内部表示,并查填适当的信息表。经过词法分析后,源程序字符串(源程序的外部表示)被翻译成

3、具有等长信息的单词串(源程序的内部表示),并产生两个表格:常数表和标识符表,它们分别包含了源程序中的所有常数和所有标识符。0.定义部分:定义常量、变量、数据结构。1.初始化:从文件将源程序全部输入到字符缓冲区中。2.取单词前:去掉多余空白。3.取单词后:去掉多余空白(可选,看着办)。4.取单词:利用实验一的成果读出单词的每一个字符,组成单词,分析类型。(关键是如何判断取单词结束?取到的单词是什么类型的单词?)5.显示结果。(五)练习该实验的目的和思路:程序开始变得复杂起来,可能是大家目前编过的程序中最复杂的,但相对于以后的程序来说还是简单的。因此要认真把握这个过渡期的练习。本实验和以后的实验相

4、关。通过练习,掌握对字符进行灵活处理的方法。(六)为了能设计好程序,注意以下事情:1.模块设计:将程序分成合理的多个模块(函数),每个模块做具体的同一事情。2.写出(画出)设计方案:模块关系简图、流程图、全局变量、函数接口等。3.编程时注意编程风格:空行的使用、注释的使用、缩进的使用等。四、上交:1.程序源代码和实验文档(电子版提交到ftp);2.已经测试通过的测试数据3组;3.实验报告(纸质):实验名称实验目的和要求(一)实验内容(1)功能描述:该程序具有什么功能?(2)程序结构描述:函数调用格式、参数含义、返回值描述、函数功能;函数之间的调用关系图。(3)程序总体执行流程图(二)实验过程记

5、录:出错次数、出错严重程度、解决办法摘要。(三)实验总结:你在编程过程中花时多少?多少时间在纸上设计?多少时间上机输入和调试?多少时间在思考问题?遇到了哪些难题?你是怎么克服的?你对你的程序的评价?你的收获有哪些?import java.awt.*;import java.awt.event.*;import java.io.*;import javax.swing.*;import javax.swing.JOptionPane;public class Compiler extends JFrame implements ActionListener int row = 1; int li

6、ne = 1; int err=0; JMenuBar mb = new JMenuBar(); JMenu fileMenu = new JMenu(文件); JMenu actionMenu = new JMenu(词法分析 JMenuItem closeWindow = new JMenuItem(退出 JMenuItem openFile = new JMenuItem(打开 JMenuItem lexical_check = new JMenuItem(开始 int begin = 0; int end = 0; TextArea text = new TextArea(); Tex

7、tArea error_text = new TextArea(); TextArea end_text = new TextArea(); FileDialog file_dialog_load = new FileDialog(this, Open file., FileDialog.LOAD); JPanel pan1=new JPanel(); JPanel pan2=new JPanel(); Compiler() this.add(end_text);end_text.setEditable(false); this.add(text); this.add(error_text);

8、error_text.setEditable(false); pan1.setLayout(new GridLayout(1,1); pan1.add(text); pan2.setLayout(new GridLayout(2,1); pan2.add(error_text,North pan2.add(end_text,South getContentPane().add(pan1,West getContentPane().add(pan2,Center this.setJMenuBar(mb); mb.add(fileMenu); mb.add(actionMenu); fileMen

9、u.add(openFile); fileMenu.add(closeWindow); actionMenu.add(lexical_check); error_text.setText(-词法分析结果-n end_text.setText(-词法分析错误信息- n closeWindow.addActionListener(this); openFile.addActionListener(this); lexical_check.addActionListener(this); pack(); this.addWindowListener(new WindowAdapter() publi

10、c void windowClosing(WindowEvent e) System.exit(0); ); this.setVisible(true); public static void main(String args) Compiler compiler = new Compiler(); public void actionPerformed(ActionEvent e) if (e.getSource() = closeWindow) int flag = JOptionPane.showConfirmDialog(null, 是否退出 System.out.println(fl

11、ag= + flag); if (flag = 0) else if (flag = 1) else if(e.getSource() = openFile) file_dialog_load.setVisible(true); File myfile = new File(file_dialog_load.getDirectory(), file_dialog_load.getFile(); try BufferedReader bufReader = new BufferedReader(new FileReader(myfile); String content = ; String s

12、tr; while(str = bufReader.readLine() != null) content += str + n text.setText(content); catch(IOException ie)IOexception occurs. else if(e.getSource() = lexical_check) row = 0; line = 1; checkLexical(); public void checkLexical() String error_info = error_text.getText(); String content = text.getTex

13、t(); if(content.equals() error_info += 文 件 尚 未 载 入 ! error_text.setText(error_info); else int i = 0;/选择第i个字符进行检测。 int N = content.length();/文件大小 int state = 0;/状态标志 for(i = 0; i ) state = 6;) state = 7;=) state = 8; else if(c=.) state=17;) state=18;%) state=19;) state=20; else if(int)c) = 10) state

14、= 9;/输入为回车Line+line+nn else if(isLetter(c) state = 10; begin = i; else if(isDigit(c) state = 11;#) state = 12;) state = 14;|) state = 15;) state = 16; else err+; String a=end_text.getText(); a+=错误: line: + line + row: + row + error: + c + Undefined character! n end_text.setText(a); break; case 1:/标志

15、符是 +)t运算符tt401 t+t运算符tt402 t+= else if(isDigit(content.charAt(i - 2)t200 content.substring(begin, i-1) + t运算符tt403 t+ i-; row-; case 2:/标志符是 -t运算符tt404 t-t运算符tt405 t-=t运算符tt423 t- elset运算符tt406 t- case 3:/标志符是 *t运算符tt407 t*=t运算符tt408 t* case 4:/标志符是 / while(c) != c = content.charAt(i); i+;t注释部分tt/ n

16、 else if(c = t运算符tt409 t/=t运算符tt410 t/ /state = 0; case 5:/标志符是 !t运算符tt411 t!=t运算符tt412 case 6:/标志符是 t运算符tt413 tt运算符tt426 state=0;t运算符tt414 case 7:/标志符是 t运算符tt415 tt运算符tt427 t运算符tt416 case 8:/标志符是 =t运算符tt417 t=t运算符tt418 t= case 9:/标志符是 回车 row = 1; line +; case 10:/标志符是 字母 if(isLetter(c) | isDigit(c) String id = content.substring(begin, end); if(isKey(id)!=0) int t=isKey(id);t关键字tt+t+ id + elset标志符tt100+id + case 11:/标志符是 数字eE state = 13; else if(isDigit(c) | c = /省略跳过,i加一操作 else if(isLetter(c) String b=end_text.getText();

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2