实验一:词法分析一、实验目的通过设计一个具体的词法分析程序,加深对词法分析原理的理解。
并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法。
编制一个读单词过程,从输入的源程序中,识别出各个具有独立意义的单词,即基本保留字、标识符、常数、运算符、分隔符五大类。
并依次输出各个单词的内部编码及单词符号自身值。
二、实验预习提示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
0.96OLED显示屏STM8L051F3_SPI带字库软件例程源码+OLED屏规格书和控制芯片手册
1
2019年全国电子设计竞赛,指定使用Ti公司的主控芯片,MSP4305529是一款上手容易的单片机,网上资源也特别丰富。
在此,把之前学习收集到的资料整理打包上传。
2024/10/17 22:23:15 10.71MB MSP430F5529 Ti datasheet
1
C语言的经典小程序,100个经典的小程序
2024/10/17 15:44:26 205KB C语言
1
Protege新手入门教程(推理篇),在基础篇的基础上以动物为例使用RacerPro推理机来实现推理过程。
2024/10/16 14:10:40 957KB Protege
1
AlteraStratixIVGXDE4EP4SGX230C2FPGA开发板光盘资料硬件参考设计VERILOG逻辑例程源码
1
简介1在AutoLISP内部1本书面向的读者2本书是如何组织的3使用本书5使用练习5使用IL盘8使用本书前的准备知识8NewRiders出版社的其它AutoCAD专著9进一步讨论10第一章 入门111.1 组织AutoCAD―进行系统设置的好处111.2 设置目录121.3 选择文本编辑器141.4 调整DOS引导环境151.5 设置AutoCAD应用程序和支持文件171.6 安装IL盘181.7 用DOS批处理文件启动AutoCAD191.8 用UNIX命令文件启动AutoCAD221.9 设置PGPshell命令和别名221.10 从外壳进入操作系统241.11加载AutoLISP和ADS文件和命令251.12 设置原型图绘图环境271.13 本书中层的约定301.14小结31第二章AutoLISP322.1了解AutoLISP的益处332.2 写一个非LISP宏332.3 书写一个简单的AutoLISP表达式342.4 从宏到AutoLISP382.5 写一个完整的AutoLISP例程392.6 从用户获取输入412.7 存储和加载AutoLISP应用程序442.8 开发一个简单的应用程序452.9 联合函数472.10 阅读一个AutoLISP程序512.11 用ACAD.LSP自动加载函数522.12 小结53第三章 AutoLISP的基本要素543.1 理解AutoLISP变量和表达式543.2 用AutoLISP来获取和设置系统变量563.3 创建用户自己的变量和表达式573.4 使用GET函数进行输入593.5 在AutoLISP中使用数学函数633.6 使用几何计算器683.7 使用字符串函数713.8 使用字符函数743.9 使用AutoLISP表753.10 定义用户自己的AutoLISP函数803.11 AutoLISP函数文档833.12 使用一个重要的函数RESET853.13 小结85第四章 理解程序流程864.1 本章中的AutoLISP工具和程序874.2 测试条件值874.3 用程序分支934.4 程序循环964.5 用PROGN函数将表达式成组1
2024/10/16 0:19:27 28.48MB AUTOLISP
1
H265是2013年提出的一项新的视频编解码技术,相比h264具有压缩率高的特点,对于高清视频占用更少的带宽,十分适合移动互联网的需求,该资源是在海思平台上实现H265解码的样例源码。
2024/10/16 0:15:36 31.18MB h26解码5 海思平台 HI35XX 音视频
1
代码功能:弹出文件选择对话框,指定格式文件的自动导入以NASA锂电池数据集为例,压缩版中含有数据集。
2024/10/15 19:29:05 53.83MB mat
1
本文档简单的介绍了格子玻尔兹曼方法的思想与理论基础,适合初学者学习,本文档附录还附有简单算例的fortran代码,非常适合初学者学习LBM的程序框架
2024/10/15 17:43:35 3.42MB LBM Fortra 适合初学者
1
共 1000 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡