从键盘输入中缀表达式,建立操作数与运算符堆栈,计算并输出表达式的求值结果。
基本要求:实现+,-,*,/四个二元运算符以及();
操作数范围为0至9。
提高要求:实现+,-两个一元运算符(即正、负号);
操作数可为任意整型值(程序可不考虑计算溢出)。
若两个整数相除,结果只保留整数商(余数丢弃);
每位同学可选择实现基本要求或者提高要求;
程序可不处理表达式语法错误。
1
【实验内容】编写一个语法分析程序,对于给定的输入串,能够判断识别该串是否为给定文法的句型。
【实验步骤和要求】1.从键盘读入输入串,并判断正误;
2.若无误,由程序自动构造FIRST、FOLLOW集以及SELECT集合,判断是否为LL(1)文法;
3.若符合LL(1)文法,由程序自动构造LL(1)分析表;
4.由算法判断输入符号串是否为该文法的句型。
2024/7/20 12:06:39 19KB LL(1)语法分析
1
1.本人就读于JLU,苦于刚开始做编译原理实验时上网很难搜到可用的相关材料,故辛辛苦苦做完后把自己搜到的材料和写的程序奉献给后来居上的学弟,希望你们能从中学到东西,哪怕只有一点点,我也所做无憾了;
2.该资源分值较大,但保证物超所值!里面包含了我自己100%原创的Java程序和down的CSDN上的另一份程序,本人无意冒犯,只是觉得好就顺手推荐一下,还有我自己写的LL(1)分析表和别人分享的一本详尽的电子书,相必大家也会很喜欢;
3.有一点希望大家注意:请大家适当借鉴,有所创新,严禁抄袭,否则后果自负,不过相信大家肯定不是那种人啦,但套话还是免不了的。
欢迎大家批评指正,如果觉得做得还行就赞一个,嘿嘿!
2024/7/20 2:30:24 6.11MB SNL 编译器 词法分析 语法分析
1
【问题的描述】一个表达式和一棵二叉树之间,存在着自然的对应关系。
写一个程序,实现基于二叉树表示的算术表达式Expression的操作。
【基本要求】【一】【必做部分】假设算术表达式Expression内可以含有变量(a-z),常量(0-9)和二元运算符(+,-,*,/,^(乘幂))。
实现以下操作:(1)ReadExpr(E)――以字符序列的形式输入语法正确的前缀表达式并构造表达式E。
(2)WriteExpr(E)――用带括号的中缀表达式输出表达式E。
(3)Assign(V,c)――实现对变量V的赋值(V=c),变量的初值为0。
(4)Value(E)――对算术表达式E求值。
(5)CompoundExpr(p,E1,E2)――构造一个新的复合表达式(E1)p(E2)。
【二】【选做部分】(1)以表达式的原书写形式输入,支持大于0的正整数常量;
(2)增加常数合并操作MergeConst(E)——合并表达式E中所有常数运算。
例如,对表达式E=(2+3-a)*(b+3*4)进行合并常数的操作后,求得E=(5-a)*(b+12)【测试数据】1) 分别输入0;
a;-91;+a*bc;+*5x2*8x;+++*3^*2^x2x6并输出。
2) 每当输入一个表达式后,对其中的变量赋值,然后对表达式求值。
3) 还有很多测试的数据,详细请见附上的文件Test.txt。
1
欢迎来到LinqToExcel项目LinqtoExcel是一个.Net库,您可以使用LINQ语法查询Excel电子表格。
将LinqToExcel添加到您的项目NuGet您可以使用NuGet快速将LinqToExcel添加到您的项目中。
只需搜索linqtoexcel并安装该软件包。
访问数据库引擎为了使用LinqToExcel,您需要安装Microsoft。
如果尚未安装,则会出现以下异常:The'Microsoft.ACE.OLEDB.12.0'providerisnotregisteredonthelocalmachine.'提供32位和64位版本,请选择与您的项目设置匹配的版本。
您一次只能安装其中之一。
查询带有标题行的工作表默认查询期望第一行是标题行,其中包含与正在使用的通用类的属性名称匹配的列名称。
它还希望数据位于名为“Shee
134KB C#
1
哈工大编译原理词法分析语法分析语义分析
1
电子商务系统简要介绍北邮大三上学期C++课程设计(2)C++课程设计作业。
实现了超市购物和银行存取款两个部分。
主要使用C++完成,基于Qt的图形化界面,使用SQLite作为数据库,涉及了基本的select、delete等语法。
两个程序(Store和Bank)之间通过Socket通信,使用TCP协议。
数据结构设计了银行账户类account,以及具有继承关系的商品类product以及它的子类们书籍类book、食品类food等等。
数据库为账户信息、商品信息和购物车设置了表accountInfo、productInfo和cart。
通过商品id将productInfo和accountInfo相关联,通过账户名将accountInfo和cart关联起来。
Socket通信使用了Qt内置的类QtTcpSocket,通过在银行设置QTcpServer作为服务器端,在商店设置QTcpSocket作为客户端,当用户购买物品结算时,商店向银行发出请求进行验证,验证成功则银行扣款,商店确认订单。
2024/7/16 7:52:18 110KB 电子商务系统 超市 电商 课程设计
1
带中文注释可成功编译运行的Linux0.11+Bochs2.62实验环境说明此注释以网上获得的“linux带中文注释的0.11版本”为基础,对照赵炯博士《Linux内核完全注释(0.11)》V3.0版(http://oldlinux.org/download/clk011c-3.0.pdf)编辑而成。
作为对赵博士感谢,以及对Linux初学者的回馈,特发布在CSDN上。
此注释可以在http://oldlinux.org/Linux.old/bochs/提供的Linux-0.11-devel-XXXXXX实验环境下正确编译成功,使用:"makedisk"命令重启Bochs虚拟机后,新编译源码直接生效,便于学习者直接阅读源码,直接进行实验。
注意事项:1、为了使注释版与实验环境上的Linux0.11内核保持一致,达到对应文件可以互换的目的,与Linux0.11原始版本相比,加入了15个系统调用函数(参见include/Linux/sys.h第78-92行。
赵博士原书没有这部分注释,我不敢班门弄斧),其它相关的文件加入了相应的定义。
新加入的代码只有函数体定义,没有具体实现,对其它原始代码没有改变、没有影响。
2、键盘定义改成了美式键盘(原始代码中是芬兰键盘,会导致个别键出问题,调试的时候我曾被迷糊了好久,以为自己把程序搞乱了)。
3、把网上VC版的注释统一改成了“/**/”格式的注释。
经测试,在Linux0.11实验环境中(gcc1.40),只有标准C注释语法可以正常编译。
4、由于《Linux内核完全注释(0.11)》原书版本更新的原因,注释中提到的图、表可能与V3.0版书中不一致。
5、由于代码中加入注释,代码行号发生变化,注释中提到的代码行号会出现不一致,建议对照3.0版查询对应内容。
6、实验方法:请先安装附带的Bochs2.62版安装包,双击Test.bxrc即可启动实验系统,执行命令:sht,即可完成对linuxcn的编译。
7、linux目录中是此实验系统中/usr/src/linux提取出来的不含中文注释的linux0.11源码(此版本比原始的0.11版多15个系统调用函数),linuxcn是加入了中文注释的源码。
8、diskb.img是实验系统与Windows环境下进行文件交换的1.44M软盘映像,执行脚本命令"sht"时会自动从此映像中读取linux.tar、linuxcn.tar包,解包并编译,编译结果在:/usr/root/zw/linuxcn目录下。
为了方便文件交换,建议使用7zip为压缩/解压缩工具(7zip可以直接生成tar包),用WinImage实现Windows环境与软件映像交换文件。
9、实验系统下.profile中加入了几个命令,请读者注意。
10、若实验环境的启动盘被破坏,请用压缩包中的bootimage-0.11-hd覆盖对应文件即可。
11、若实验环境的要命文件系统被破坏,请用压缩包中的hdc-0.11-new.img覆盖对应文件即可。
2014-5-4cyfx2288
2024/7/14 20:51:11 10.28MB 中文注释 成功编译 linux0.11 实验环境
1
静态检查:静态测试包括代码检查、静态结构分析、代码质量度量等。
它可以由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具自动进行。
代码检查代码检查包括代码走查、桌面检查、代码审查等,主要检查代码和设计的一致性,代码对标准的遵循、可读性,代码的逻辑表达的正确性,代码结构的合理性等方面;
可以发现违背程序编写标准的问题,程序中不安全、不明确和模糊的部分,找出程序中不可移植部分、违背程序编程风格的问题,包括变量检查、命名和类型审查、程序逻辑审查、程序语法检查和程序结构检查等内容。
”。
看了一系列的静态代码扫描或者叫静态代码分析工具后,总结对工具的看法:静态代码扫描工具,和编译器的某些功能其实是很相似
2024/7/14 19:01:18 139KB Java静态检测工具的简单介绍
1
PL/0词法分析、语法分析、语义分析与中间代码生成、解释执行最终结果输出目标代码、符号表、解释执行结果
2024/7/13 14:17:57 10.22MB 编译原理
1
共 945 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡