作者:胡彦本框架是一个lex/yacc完整的示例,用于学习lex/yacc程序基本的搭建方法,在linux/cygwin下敲入make就可以编译和执行。
本例子虽小却演示了lex/yacc程序最常见和重要的特征:*lex/yacc文件格式、程序结构。
*如何在lex/yacc中使用C++和STL库,用extern"C"声明那些lex/yacc生成的、要链接的C函数,如yylex(),yywrap(),yyerror()。
*重定义YYSTYPE/yylval为复杂类型。
*用%token方式声明yacc记号。
*用%type方式声明非终结符的类型。
*lex里正则表达式的定义、识别方式。
*lex里用yylval向yacc返回属性值。
*在yacc嵌入的C代码动作里,对记号属性($1,$2等)、和非终结符属性($$)的正确引用方法。
*对yyin/yyout重赋值,以改变yacc默认的输入/输出目标。
*如何开始解析(yyparse函数),结束或继续解析(yywrap函数)。
本例子功能是,对当前目录下的file.txt文件,解析出其中的标识符、数字、其它符号,显示在屏幕上。
linux调试环境是Ubuntu10.04。
总之,大部分框架已经搭好了,你只要稍加扩展就可以成为一个计算器之类的程序,用于《编译原理》的课程设计。
文件列表:lex.l:lex程序文件。
yacc.y:yacc程序文件。
main.hpp:共同使用的头文件。
Makefile:makefile文件。
file.txt:给程序解析的文本文件。
使用方法:1-把lex_yacc_example.rar解压到linux/cygwin下。
2-命令行进入lex_yacc_example目录。
3-敲入make,这时会自动执行以下操作:(1)自动调用flex编译.l文件,生成lex.yy.c文件。
(2)自动调用bison编译.y文件,生成yacc.tab.c和yacc.tab.h文件。
(3)自动调用g++编译、链接出可执行文件main。
(4)自动执行main,得到如下结果:。
bison-dyacc.yg++-clex.yy.cg++-cyacc.tab.cg++lex.yy.oyacc.tab.o-omainid:abcid:defghiint:123int:45678op:!op:@op:#op:$AllId:abcdefghi参考资料:《Lex和Yacc从入门到精通(6)-解析C-C++包含文件》,http://blog.csdn.net/pandaxcl/article/details/1321552其它文章和代码请留意我的blog:http://blog.csdn.net/huyansoft2013-4-27
1
DirectX修复工具(DirectXRepair)是一款系统级工具软件,简便易用。
本程序为绿色版,无需安装,可直接运行。
本程序的主要功能是检测当前系统的DirectX状态,如果发现异常则进行修复。
程序主要针对0xc000007b问题设计,可以完美修复该问题。
本程序中包含了最新版的DirectXredist(Jun2010),并且全部DX文件都有Microsoft的数字签名,安全放心。
本程序为了应对一般电脑用户的使用,采用了傻瓜式一键设计,只要点击主界面上的“检测并修复”按钮,程序就会自动完成校验、检测、下载、修复以及注册的全部功能,无需用户的介入,大大降低了使用难度。
本程序适用于多个操作系统,如WindowsXP(需先安装.NET2.0,详情请参阅“致WindowsXP用户.txt”文件)、WindowsVista、Windows7、Windows8、Windows8.1、Windows8.1Update、Windows10,同时兼容32位操作系统和64位操作系统。
本程序会根据系统的不同,自动调整任务模式,无需用户进行设置。
本程序的V3.8版分为标准版、增强版以及在线修复版。
所有版本都支持修复DirectX的功能,而增强版则额外支持修复c++的功能。
在线修复版功能与标准版相同,但其所需的数据包需要在修复时自动下载。
各个版本之间,主程序完全相同,只是其配套使用的数据包不同。
因此,标准版和在线修复版可以通过补全扩展包的形式成为增强版。
本程序自V3.5版起,自带扩展功能。
只要在主界面的“工具”菜单下打开“选项”对话框,找到“扩展”标签,点击其中的“开始扩展”按钮即可。
扩展过程需要Internet连接,扩展成功后新的数据包可自动生效。
扩展用时根据网络速度不同而不同,最快仅需数秒,最慢需要数分钟,烦请耐心等待。
本程序自V2.0版起采用全新的底层程序架构,使用了异步多线程编程技术,使得检测、下载、修复单独进行,互不干扰,快速如飞。
新程序更改了自我校验方式,因此使用新版本的程序时不会再出现自我校验失败的错误;
但并非取消自我校验,因此程序安全性与之前版本相同,并未降低。
程序有自动更新c++功能。
由于绝大多数软件运行时需要c++的支持,并且c++的异常也会导致0xc000007b错误,因此程序在检测修复的同时,也会根据需要更新系统中的c++组件。
自V3.2版本开始使用了全新的c++扩展包,可以大幅提高工业软件修复成功的概率。
修复c++的功能仅限于增强版,标准版及在线修复版在系统c++异常时(非丢失时)会提示用户使用增强版进行修复。
除常规修复外,新版程序还支持C++强力修复功能。
当常规修复无效时,可以到本程序的选项界面内开启强力修复功能,可大幅提高修复成功率。
请注意,此功能为试验性功能,请仅在常规修复无效时再使用。
程序有两种窗口样式。
正常模式即默认样式,适合绝大多数用户使用。
另有一种简约模式,此时窗口将只显示最基本的内容,修复会自动进行,修复完成10秒钟后会自动退出。
该窗口样式可以使修复工作变得更加简单快速,同时方便其他软件、游戏将本程序内嵌,即可进行无需人工参与的快速修复。
开启简约模式的方法是:打开程序所在目录下的“Settings.ini”文件(如果没有可以自己创建),将其中的“FormStyle”一项的值改为“Simple”并保存即可。
新版程序支持命令行运行模式。
在命令行中调用本程序,可以在路径后直接添加命令进行相应的设置。
常见的命令有7类,分别是设置语言的命令、设置窗口模式的命令,设置安全级别的命令、开启强力修复的命令、设置c++修复模式的命令、控制DirectDraw的命令、显示版权信息的命令。
具体命令名称可以通过“/help”或“/?”进行查询。
程序有高级筛选功能,开启该功能后用户可以自主选择要修复的文件,避免了其他不必要的修复工作。
同时,也支持通过文件进行辅助筛选,只要在程序目录下建立“Filter.dat”文件,其中的每一行写一个需要修复文件的序号即可。
该功能仅针对高级用户使用,并且必须在正常窗口模式下才有效(简约模式时无效)。
本程序有自动记录日志功能,可以记录每一次检测修复结果,方便在出现问题时,及时分析和查找原因,以便找到解决办法。
程序的“选项”对话框中包含了6项高级功能。
点击其中的“注册系统文件夹中所有dll文件”按钮可以自动注册系统文件夹下的所有dll文件。
该项功能不仅能修复DirectX的问题,还可以修复系统中很多其他由于dll未注册而产生的问题,颇为实用。
点击该按钮旁边的小箭头,还可以注册任意指定文件夹下的dll文件,方便用户对绿色版、硬盘版的程序组件进行注册。
2023/8/3 0:57:01 940KB zhangyue DirectX 修复 工具
1
qt入门级的程序,读取txt文件代码。
通过QFileDialog选择文件路径及文件名,将文件内容读入QTextStream,定义QString变量line来一行行读取文件内容,最后用label或textbrowser显示。
2023/7/26 20:06:42 2KB qt txt 读取
1
C#操作Txt文件源码.rar
2023/7/24 20:09:08 84KB c#
1
bat脚本,按txt每行内容批量创建新txt文件,支持空格
2023/7/19 4:38:32 89B bat
1
安装即中文显示,方便好用,打开一些比较大的txt文件都很快
2023/7/16 11:13:30 254KB editplus
1
用c++实现在一个txt文件中查找字符,算法就是字符串匹配,没什么技巧性,最后还给出了运行时间,适合初学者参考
2023/7/16 1:10:33 872B 查找字符 c++
1
布尔莎七参数;公共点残差;
大地测量学;
坐标换算;
大地测量学的编程作业,含源码,有兴趣的童鞋可以看一看,运行没有任何问题,用于坐标转换,最后成果输出为TXT文件
1
题目名称 linux实验-基本指令1题目关键字 linux实验-基本指令1题目录入时间 2013-4-122:36:02题目内容 1、root帐号登录,查看/tmp目录,如果/tmp目录下没有子目录myshare,则建立该目录。
2、创建帐号testuser。
3、把myshare目录及其目录下的所有文件和子目录的拥有者该为testuser,工作组改为users。
4、切换至testuser帐号。
进入/tmp/myshare目录,采用vim编辑器编写以上程序,程序名称为hello.sh:#!/bin/bashecho"appstart"echo-efunc(){echo"helloworld!"}funcecho-eecho"append"5、保存hello.sh后,给予hello.sh拥有者可读、可写和可执行的权限,同组可读可执行,其他人可执行权限。
6、输入./hello.sh,观察程序输出的效果。
7、进入testuser的用户主目录,在这个目录下创建hello.sh的软链接,同时拷贝hello.sh到该目录下并改名为hello.sh.bak,要求拷贝时保留文件属性值。
8、退出testuser帐号,回到root帐号,从/开始查找后缀名为.conf的所有文件,把输出结果重定向到testuser帐号的主目录下的output.txt文件。
9、在上一步操作的.conf文件中找出文件容量最大的和最小那个,并把这两个文件的容量大小输出到output.txt文件中。
10、统计出系统中有多少个用户帐号,把数量输出到output.txt文件中。
11、把output.txt文件转换为windows记事本可正规打开的格式。
12、tar打包压缩testuser帐号主目录下的所有文件。
13、用U盘把上一步打包压缩文件拷贝到U盘上。
14、执行userdel-rtestuser,执行rm-frmyshare题目创建人 题目注释 把打包压缩文件提交即可。
题目名称 linux-课题练习1题目关键字 linux-课题练习1题目录入时间 2013-4-1512:21:53题目内容 1、创建组testgroup;
2、创建用户a2012,先采用默认设置创建,然后使该用户加入testgroup组。
3、创建用户a2013,其用户主目录为/tmp/a2013,其主组为testgroup,附加组为users。
4、用id命令显示a2012和a2013用户信息,并且把这些信息记录到日志文件/tmp/test.log中。
5、参考书本98-99页crontab命令内容,使用root执行crontab-e,编写时程表,完成每隔5分钟把当前时间追加进/tmp/test.log中。
6、执行crontab-l,把输出内容追加进/tmp/test.log。
7、待完成2次时间记录追加后,执行crontab-r删除当前的时程表。
8、把/tmp/test.log拷贝到windows中(注意文本格式的转换),采用记事本打开,看是否看到完整内容。
题目创建人 题目注释 课题练习,做完后直接把test.log文件提交上来。
题目名称 linux课后作业1题目关键字 linux课后作业1题目录入时间 2013-5-610:23:32题目内容 完成课本实验6第一题:菜单驱动程序。
题目创建人 题目注释 本题为当天提交,把程序文件以附件形式提交即可。
题目名称 linuxshell程序设计实验1题目关键字 linuxshell程序设计实验1题目录入时间 2013-5-610:25:36题目内容 完成课本实验6的第2题,要有输入错误处理。
题目创建人 题目注释 把程序文件以附件形式提交即可。
题目名称 linuxshell程序设计实验2题目关键字 linuxshell程序设计实验2题目录入时间 2013-5-610:26:43题目内容 按要求完成课本实验7。
题目创建人 题目注释 把3个程序文件打包提交即可。
题目名称 linuxgcc实验题目关键字 linuxgcc实验题目录入时间 2013-5-2014:27:52题目内容 课本实验8第2题题目创建人 题目注释 请提交Makefile文件题目名称 Linux下MYSQL操作题目关键字 MYSQL实验题目录入时间
2023/7/1 14:04:15 5.33MB Linux 综合性 报告 华农
1
matlab程序,分析复杂网络时使用以美国航空网数据集为例将txt文件中的数据集改为--邻接矩阵--形式进行保存转换结果为无向、无权图a为节点个数(可随意设)为了执行简单,函数没有设置参数,大家直接在程序里改参数a的值
2023/6/12 2:27:44 12KB matlab 复杂网络 txt 邻接矩阵
1
共 368 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡