一、实验目的:通过设计编制调试一个具体的词法分析程序,加深对词法分析原理的理解。
并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法。
编制一个读单词过程,从输入的源程序中,识别出各个具有独立意义的单词,即基本保留字、标识符、常数、运算符、分隔符五大类。
并依次输出各个单词的内部编码及单词符号自身值。
(遇到错误时可显示“Error”,然后跳过错误部分继续显示)二、实验预习提示1、词法分析器的功能和输出格式词法分析器的功能是输入源程序,输出单词符号。
词法分析器的单词符号常常表示成以下的二元式(单词种别码,单词符号的属性值)。
本实验中,采用的是按类来安排种别码的方式。
2、部分单词的BNF表示(可参考教材43页的状态转换图)->->|||ε->->|ε->+->-->>->>=3、做词法分析器需要把对象语言的词法全部描述出来,在这我们取C语言子集,它的词法如下:(1)关键字mainifelseintreturnvoidwhile……..所有的关键字都是小写。
(2)专用符号=+-*/<=>>===!=;
:,{}[]()(3)空格和空白、制表符和换行符。
空格一般用来分隔ID、NUM、专用符号和关键字,在词法分析阶段通常被忽略。
各种单词符号的种别码,这是一种符号一个编码的设计。
只供参考!单词符号 种别码 单词符号 种别码main 2 [ 28int 1 ] 29char 3 { 30If 4 } 31else 5 , 32for 6 : 33while 7 ; 34ID 10 > 35NUM 20 = 37+ 22 +”,当前字符为’>’,此时,分析器倒底是将其分析为大于关系运算符还是大于等于关系运算符呢?显然,只有知道下一个字符是什么才能下结论。
于是分析器读入下一个字符’+’,这时可知应将’>’解释为大于运算符。
但此时,超前读了一个字符’+’,所以要回退一个字符,词法分析器才能正常运行。
在分析标识符,无符号整数等时也有类似情况。
5、模块结构见附图三、实验过程和指导:(一)准备:1.阅读课本有关章节,明确语言的语法,写出基本保留字、标识符、常数、运算符、分隔符和程序例。
2.编制好程序。
3.准备好多组测试数据。
(二)上机调试:(三)程序要求:程序输入/输出示例:如源程序为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。
以上为参考,具体可自行增删。
程序思路(参考):这里以开始定义的C语言子集的源程序作为词法分析程序的输入数据。
在词法分析中,自文件头开始扫描源程序字符,一旦发现符合“单词”定义的源程序字符串时,将它翻译成固定长度的单词内部表示,并查填适当的信息表。
经过词法分析后,源程序字符串(源程序的外部表示)被翻译
2025/5/25 6:43:53 4KB 词法分析
1
这些东西源自AndroidstudioSDK,其他地方好难找,网上不好搜到。
没有这个东西,编译老是出错,下载,并解压这些包放到~AndroidStudioSDK~\extras\android\m2repository\com\android\support\appcompat-v7记得修改maven-metadata.xml里的最好版本号和其他选项比如最后更新日期21.0.021.0.221.0.322.0.022.1.022.2.022.2.1
2025/4/27 0:36:31 7.02MB Android Studio appcompat-v7 21.0.0
1
kaggle2018年人脸识别数据集,一共22张彩色人脸图,包括10位志愿者,包括不同光照变化、头部姿态。
2025/4/24 15:27:33 124KB 人脸数据集 人脸识别
1
第1篇Java编程基础  第1章Java开发环境的搭建(教学视频:9分钟)2  1.1理解Java2  1.2搭建Java所需环境3  1.2.1下载JDK3  1.2.2安装JDK4  1.2.3配置环境5  1.2.4测试JDK配置是否成功7  实例1开发第一个Java程序7  第2章Java基础类型与运算符(教学视频:39分钟)9  2.1基础类型9  实例2自动提升9  实例3自动转换10  实例4常用基础类型之强制转换11  2.2运算符12  实例5算术运算符12  实例6关系运算符13  实例7逻辑运算符14  实例8位运算符15  实例9移位运算符16  实例10转型运算符17  2.3其他形式18  实例11常量与变量18  实例12各种进制的转换19  实例13Java中的进制与移位运算符22  第3章条件控制语句(教学视频:75分钟)26  3.1if控制语句26  实例14判断输入的年份是否为闰年26  实例15抽奖活动27  3.2for语句28  实例16小九九乘法表28  实例17如何列出素数29  实例18Java中的递归31  实例19男生女生各多少人32  实例20求水仙花数34  实例21求任意一个正数的阶乘35  实例22求n的n次方35  实例23利用for循环输出几何图形36  实例24杨辉三角38  3.3while语句39  实例25求1到100之间的和39  实例26存上100元需要多少天40  实例27输出100之间的所有偶数41  实例28如何判断回文数字42  3.4do…while语句43  实例29输出100之间的所有奇数44  实例30求最大的随机数44  3.5switch语句45  实例31判断字母分类46  实例32优良及差47  实例33打印任意一年日历48  实例34一年四季的划分51  第2篇Java数据处理  第4章异常处理(教学视频:62分钟)54  4.1编译时异常54  实例35除0发生的算术异常(ArithmeticException)54  实例36数组下标越界异常(ArrayIndexOutOfBoundsException)55  实例37数组元素类型不匹配异常(ArrayStoreException)56  实例38强制类型转换异常(ClassCastException)56  实例39索引越界异常(IndexOutOfBoundsException)57  实例40空指针异常(NullPointerException)58  实例41数字格式转换异常(NumberFornatException)59  实例42字符串索引越界异常(StringIndexOutBounds)60  实例43操作错误(UnsupportedOperationException)60  4.2运行时异常61  实例44找不到指定类时发生的异常(ClassNotFoundException)62  实例45请求的方法不存在(NoSuchMethodException)63  4.3try…catch捕获异常65  实例46try…catch捕获异常的实例66  实例47try…catch…finally捕获异常的实例67  实例48try…catch嵌套捕获异常的实例68  4.4throws声明异常69  实例49throws声明异常实例一69  实例50throws声明异常实例二70  4.5throw抛出异常72  实例51throw抛出异常实例一72  实例52throw抛出异常实例二73  4.6自定义异常74  实例53自定义异常实例一74  实例54自定义异常实例二75  第5章数组(教学视频:98分钟)78  5.1一维数组78  实例55一维数组的创建与使用78  实例56按相反的顺序输出79  实例57奇偶分组80  实例58找宝81  实例59寻找最小数82
2025/4/19 0:50:42 16.86MB Java范例开发大全
1
可搜索加密研究的必备文献,一次下载,即可进行研究,基础的知识,希望能帮到想学这方面的同学。
有疑问或者需要其他资源,我上传到CSDN中。
2025/4/18 3:46:12 43.67MB ABSE 可搜索加密
1
本人翻遍了CSDN都找不到一个正确的TOA定位算法程序,唯一找到的一个是用最小二乘解的(参考文献N.Patwari,J.N.Ash,S.Kyperountas,A.O.Hero,R.L.Moses,andN.S.Correal,"Locatingthenodes:cooperativelocalizationinwirelesssensornetworks,"IEEESignalProcessingMagazine,vol.22,no.4,pp.54-69,2005.),性能无法达到克拉美罗界。
因此本人自己重新写了一个程序,参考该领域著名学者K.C.Ho的文章(参考文献Z.MaandK.C.Ho,"TOAlocalizationinthepresenceofrandomsensorpositionerrors,"in2011IEEEInternationalConferenceonAcoustics,SpeechandSignalProcessing(ICASSP),2011,pp.2468-2471.)。
该算法适用于传感器位置有误差/无误差的情况,算法性能能够达到克拉美罗界。
示例程序中给出了CRLB的程序,场景为传感器有误差的情况。
程序运行结果与参考文献一致。
(搞不懂现在的人都是要什么50积分,多分享下不好吗?)******特别提示******:本代码多处使用了Matlab2016a以后支持的新语法,旧版本无法正常运行的,请自行修改代码或更新Matlab版本!!!
2025/4/14 5:11:46 2KB TOD 定位 最小二乘 传感器误差
1
LibEvent2.0.22的帮助文档中文翻译版本 日期 作者 备注2016-11-15 周勇 Libevent编程中文帮助文档V1.0
2025/4/11 14:53:28 1.01MB LibEvent
1
Java最全面试宝典!!清晰PDF版!!助你面试一臂之力!!第一部分Java基础部分共83题第二部分算法与编程部分共12题第三部分HTMLJavascriptAjax部分共5题第四部分JavaWeb部分共20题第五部分数据库部分共30题第六部分XML部分共5题第七部分流行的框架与新技术共22题第八部分软件工程与设计模式共3题第九部分J2EE部分共14题第十部分EJB部分共8题第十一部分WebServics部分第十二部分其他
2025/4/4 1:53:18 717KB Java 面试 宝典
1
源码中找出来的,赚点辛苦费,在eclipse上使用的依赖包,其中包括最新的V4和V7包,这个风格是要这2个包支持的,确切的说是V7需要V4的支持
2025/4/2 8:36:21 1.96MB appcompat
1
LINGO是用来求解线性和非线性优化问题的简易工具。
LINGO内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO高效的求解器可快速求解并分析结果。
§1LINGO快速入门当你在windows下开始运行LINGO系统时,会得到类似下面的一个窗口:外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。
在主窗口内的标题为LINGOModel–LINGO1的窗口是LINGO的默认模型窗口,建立的模型都都要在该窗口内编码实现。
下面举两个例子。
例1.1如何在LINGO中求解如下的LP问题:在模型窗口中输入如下代码:min=2*x1+3*x2;x1+x2>=350;x1>=100;2*x1+x2<=600;然后点击工具条上的按钮即可。
例1.2使用LINGO软件计算6个发点8个收点的最小费用运输问题。
产销单位运价如下表。
单位销地运价产地 B1 B2 B3 B4 B5 B6 B7 B8 产量A1 6 2 6 7 4 2 5 9 60A2 4 9 5 3 8 5 8 2 55A3 5 2 1 9 7 4 3 3 51A4 7 6 7 3 9 2 7 1 43A5 2 3 9 5 7 2 6 5 41A6 5 5 2 2 8 1 4 3 52销量 35 37 22 32 41 32 43 38 使用LINGO软件,编制程序如下:model:!6发点8收点运输问题;sets:warehouses/wh1..wh6/:capacity;vendors/v1..v8/:demand;links(warehouses,vendors):cost,volume;endsets!目标函数;min=@sum(links:cost*volume);!需求约束;@for(vendors(J):@sum(warehouses(I):volume(I,J))=demand(J));!产量约束;@for(warehouses(I):@sum(vendors(J):volume(I,J))<=capacity(I));!这里是数据;data:capacity=605551434152;demand=3537223241324338;cost=626742954953858252197433767392712395726555228143;enddataend然后点击工具条上的按钮即可。
为了能够使用LINGO的强大功能,接着第二节的学习吧。
§2LINGO中的集对实际问题建模的时候,总会遇到一群或多群相联系的对象,比如工厂、消费者群体、交通工具和雇工等等。
LINGO允许把这些相联系的对象聚合成集(sets)。
一旦把对象聚合成集,就可以利用集来最大限度的发挥LINGO建模语言的优势。
现在我们将深入介绍如何创建集,并用数据初始化集的属性。
学完本节后,你对基于建模技术的集如何引入模型会有一个基本的理解。
2.1为什么使用集集是LINGO建模语言的基础,是程序设计最强有力的基本构件。
借助于集,能够用一个单一的、长的、简明的复合公式表示一系列相似的约束,从而可以快速方便地表达规模较大的模型。
2.2什么是集集是一群相联系的对象,这些对象也称为集的成员。
一个集可能是一系列产品、卡车或雇员。
每个集成员可能有一个或多个与之有关联的特征,我们把这些特征称为属性。
属性值可以预先给定,也可以是未知的,有待于LINGO求解。
例如,产品集中的每个产品可以有一个价格属性;
卡车集中的每辆卡车可以有一个牵引力属性;
雇员集中的每位雇员可以有一个薪水属性,也可以有一个生日属性等等。
LINGO有两种类型的集:原始集(primitive set)和派生集(derivedset)。
一个原始集是由一些最基本的对象组成的。
一个派生集是用一个或多个其它集来定义的,也就是说,它的成员来自于其它已存在的集。
2.3模型的集部分集部分是LINGO模型的一个可选部分。
在LINGO模型中使用集之前,必须在集部分事先定义。
集部分以关键字“sets:”开始,以“endsets”结束。
一个模型可以没有集部分,或有一个简单的集部分,或有多个集部分。
一个集部分可以放置于模型的任何地方,但是一个集及其属性
1
共 449 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡