实验一:词法分析一、实验目的通过设计一个具体的词法分析程序,加深对词法分析原理的理解。
并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法。
编制一个读单词过程,从输入的源程序中,识别出各个具有独立意义的单词,即基本保留字、标识符、常数、运算符、分隔符五大类。
并依次输出各个单词的内部编码及单词符号自身值。
二、实验预习提示1、 词法分析器的功能和输出格式词法分析器的功能是输入源程序,输出单词符号。
词法分析器的单词符号常常表示成以下的二元式(单词种别码,单词符号的属性值)。
本实验中,采用的是一类符号对应一个种别码的方式。
2、 单词的BNF表示---_----_----_-+---_--等等3、 模块结构(见课本P95-96)(可根据自己的理解适当修改)三、实验过程和指导:(一) 准备:1. 阅读课本有关章节,明确语言的语法,写出基本保留字、标识符、常数、运算符、分隔符和程序例。
2. 初步编制好程序。
3. 准备好多组测试数据。
(二) 上机:(三) 程序要求:1. 要求用C++Builder或者Dephi或者VC、VB等可视化编程工具编写;
要求有界面(即一般windows下应用程序界面)。
2. 输入为某语言源代码。
程序输入/输出示例:如源程序为C语言。
输入如下一段:main(){inta,b;a=10;b=a+20;}要求输出如下(并以文件形式输出)。
(2,”main”)(5,”(“)(5,”)“)(5,”{“}(1,”int”)(2,”a”)(5,”,”)(2,”b”)(5,”;”)(2,”a”)(4,”=”)(3,”10”)(5,”;”)(2,”b”)(4,”=”)(2,”a”)(4,”+”)(3,”20”)(5,”;”)(5,”}“)注:为右大括号要求(可根据实际情况加以扩充和修改):识别保留字:if、int、for、while、do、return、break、continue等等,单词种别码为1。
其他的标识符,单词种别码为2。
常数为无符号数,单词种别码为3。
运算符包括:+、-、*、/、=、>、=、<=、!=;
单词种别码为4。
分隔符包括:“,”“;
”“(”“)”“{”“}”等等,单词种别码为5。
(四) 程序思路(仅供参考):0. 定义部分:定义常量、变量、数据结构。
1. 初始化:从文件将源程序输入到字符缓冲区中。
2. 取单词前:去掉多余空白。
调用过程GETNB();3. 提取字符组成单词,利用课本P97图4.5转换图构造单词扫描过程SCAN(),需要根据实际情况加以修改。
4. 判断单词的种别码,调用过程LOOKUP();5. 显示(导出)结果。
2024/10/19 0:44:54 433KB 编译原理 词法分析实验
1
基于ffmpeg将avi视频转换为mp4视频,先将avi转为yuv420p视频帧序列,后将视频帧序列转为mp4视频
2024/10/18 19:11:34 14.42MB c++
1
这是一篇完整的毕业设计论文且功能全部实现,并带有源程序。
该信号发生器主要由TMS320C5410和TLC320AD50C两大部分组成。
在DSP芯片上完成对波形的编程,通过多通道缓冲串口向TLC320AD50C(数模转换器)发送波形数据,通过TLC320AD50C的插值滤波等措施产生模拟波形输出。
该信号发生器的硬件设计中TMS3205410和TLC320AD50C的连接采用SPI协议,TLC320AD50C作为SPI主器件,提供帧同步和时钟信号,多通道缓冲串口作为SPI从器件。
该信号发生器的软件编程主要采用模块化的设计思想,把程序细化成易于实现的小模块。
编程的语言主要采用执行效率高的汇编语言,C和汇编语言混合使用的方式灵活的编写程序。
通过软硬件的联合调试最终实现了矩形波、三角波、锯齿波和正弦波等波形的产生,并成功的实现了其波形的幅度和频率的可调性。
1
V0.6.0:加入文件拖放功能。
V0.5.5:修正建立新的配置文件时,保存失败的Bug。
V0.5.4:修正数制计算器中输入A-F时的bug,增加源数据存储类型选择。
0.5.3:修改图标,部分界面。
0.5.2:About界面修改,添加更新网址。
0.5.1:修正块另存时新建文件保存失败的Bug。
0.5:新增文件内、文件间块移动、复制、交换、另存等功能0.4:新增转换为二进制后比较功能本人继MCUTool以后的另外一个单片机开发实用工具软件,用于单片机调试过程中简单的参量修改,省略修改源代码、再编译的过程,直接修改目标文件。
尤其是对eeprom数据的修改、调整更为方便实用。
本软件编写的目的是用来编辑存放于单片机Flash或EEPROM中的数据,支持IntelHex格式以及MotorolaS格式的数据文件,也可以编辑二进制的内存映射文件。
数据的编辑可以通过常量定义的方式,也可以通过内存映射的方式进行。
同时可以在两种16进制格式文件之间相互转换。
格式转换以行数据为单位,以确保转换前后数据不会改变。
另外提供十进制、十六进制转换器,转换结果可以作为普通显示或作为内存映射,作内存映射时可以选择多字节数据的存储方式。
二进制比较功能,通过不同工具生成的Hex文件可能因为格式而无法进行文本方式比较,本工具可以首先转换为二进制数据再进行比较,免去自行转换的麻烦。
单文件内/双文件间的块操作,包括复制、移动、交换、另存等等,方便实验数据提取、复制。
2024/10/18 12:14:13 587KB Intel Hex S-Record
1
最近由于需要实现音乐频谱,所以今天就为大家普及一下。
关于音乐频谱你需要了解数字信号处理的知识,尤其是FFT的知识。
简单说就是把时域上连续的信号(波形)强度转换成离散的频域信号(频谱)。
我理解波形就是信号的强度,或者说音响设备的输出的功率,功率高,音量就大。
但是歌曲的曲调是不会变的,因为频谱是不会变的。
这个是我写的一个demo,可以借鉴一下
2024/10/17 22:29:15 31.44MB MP3 跳动频谱 音乐动画 android
1
基于qt4的串口调试助手,软件功能全部完善,发送和接收数据,十六进制转换,保存数据等等,适合qt初学者学习。
2024/10/17 16:16:39 35KB qt4
1
将vc6的工程转换为高版本会提示缺少这个文件
2024/10/17 10:19:47 1.43MB mfc42d.lib
1
c/c++Windows移植到LINUX的数据类型转换总结,都在WinToLinux.h文件中,需要时直接引入此头文件即可,很实用。
2024/10/17 6:32:56 2KB LINUX 数据类型转换
1
Java聊天室程序需求分析2.1业务需求 1.与聊天室成员一起聊天。
2.可以与聊天室成员私聊。
3.可以改变聊天内容风格。
4.用户注册(含头像)、登录。
5.服务器监控聊天内容。
6.服务器过滤非法内容。
7.服务器发送通知。
8.服务器踢人。
9.保存服务器日志。
10.保存用户聊天信息。
2.2系统功能模块2.2.1服务器端 1.处理用户注册 2.处理用户登录 3.处理用户发送信息 4.处理用户得到信息 5.处理用户退出2.2.2客户端 1.用户注册界面及结果 2.用户登录界面及结果 3.用户发送信息界面及结果 4.用户得到信息界面及结果 5.用户退出界面及结果2.3性能需求 运行环境:Windows9x、2000、xp、2003,Linux 必要环境:JDK1.5以上 硬件环境:CPU400MHz以上,内存64MB以上 3.1.2 客户端结构 ChatClient.java为客户端程序启动类,负责客户端的启动和退出。
Login.java为客户端程序登录界面,负责用户帐号信息的验证与反馈。
Register.java为客户端程序注册界面,负责用户帐号信息的注册验证与反馈。
ChatRoom.java为客户端程序聊天室主界面,负责接收、发送聊天内容与服务器端的Connection.java亲密合作。
Windowclose为ChatRoom.java的内部类,负责监听聊天室界面的操作,当用户退出时返回给服务器信息。
Clock.java为客户端程序的一个小程序,实现的一个石英钟功能。
3.2系统实现原理当用户聊天时,将当前用户名、聊天对象、聊天内容、聊天语气和是否私聊进行封装,然后与服务器建立Socket连接,再用对象输出流包装Socket的输出流将聊天信息对象发送给服务器端当用户发送聊天信息时,服务端将会收到客户端用Socket传输过来的聊天信息对象,然后将其强制转换为Chat对象,并将本次用户的聊天信息对象添加到聊天对象集Message中,以供所有聊天用户访问。
接收用户的聊天信息是由多线程技术实现的,因为客户端必须时时关注更新服务器上是否有最新消息,在本程序中设定的是3秒刷新服务器一次,如果间隔时间太短将会增加客户端与服务器端的通信负担,而间隔时间长就会让人感觉没有时效性,所以经过权衡后认为3秒最佳,因为每个用户都不可能在3秒内连续发送信息。
当每次用户接收到聊天信息后将会开始分析聊天信息然后将适合自己的信息人性化地显示在聊天信息界面上。
4.1.1问题陈述1.接受用户注册信息并保存在一个基于文件的对象型数据库。
2.能够允许注册过的用户登陆聊天界面并可以聊天。
3.能够接受私聊信息并发送给特定的用户。
4.服务器运行在自定义的端口上#1001。
5.服务器监控用户列表和用户聊天信息(私聊除外)。
6.服务器踢人,发送通知。
7.服务器保存日志。
2024/10/16 14:54:49 1.08MB java 源代码 聊天
1
硬件工程师手册目前最全版本(159页)小数分频一种将异步时钟域转换成同步时钟域的方法一种快速无毛刺的时钟倒换方法以太网时钟同步技术_时钟透传技术白皮书VHDL设计风格和实现FPGA设计流程指南FPGA设计规范codingstyleVerilog典型电路设计VerilogHDL华为入门教程Synplify工具使用指南(华为文档)HuaWeiVerilog约束FPGA技巧Xilinx静态时序分析与逻辑华为面经
2024/10/16 5:34:40 6.88MB FPGA Verilog VHDL 华为
1
共 1000 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡