作者:胡彦本框架是一个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
利用proteus软件对数码管动态显示进行了仿真,由于是软件仿真,对于动态数码管的视觉残留有一些影响,所以把延时时间调的较长,以便能够看清其扫描显示的过程,可以作为课堂给学生演示的课件,亦可以给爱好者作为参考!
1
UWB测距资料,本资料是研创物联开发板的配套资料,资料包含mini3s产品说明手册,开发软件,PC客户端演示软件,定位数据样本,芯片手册和Decawave产品化应用设计参考资料
2023/8/3 9:37:31 105.37MB UWB 测距 室内定位
1
压缩包中有三个粒子滤波的演示程序,一个滤波,一个目标跟踪,一个机器人定位。
关于效果,大家可以先看看http://blog.csdn.net/heyijia0327/article/details/41142679。
再决定是否下载。
2023/8/3 3:11:35 1.8MB 粒子滤波
1
程序测试软件:MyEclipse数据库:mysql(可以转换sqlserver,oracle)!系统采用SSH2框架设计,实现了学生信息,教师信息和课程信息的添加,修改,删除和查询操作
2023/8/1 6:49:43 17.69MB java web
1
基于腾讯微信小程序开发的图书管理系统,内附ppt与演示视频,支持二维码识别
2023/8/1 4:15:25 61.25MB 微信
1
Nest&AngularUniversalStarter使用Universal的最小和Angular启动器。
如果您正在寻找AngularUniversal仓库,请转至。
用:red_heart_selector:通过入门该演示是根据构建的。
安装npmi开发(仅客户端渲染)npmstart将运行ngserve。
开发(服务器端渲染)npmrundev:ssr。
生产*npmrunbuild:ssr&&npmrunserve:ssr编译您的应用程序并启动Nest服务器以在http://localhost:4000上为您的Universal应用程序提供服务。
*npmrunprerender编译您的应用程序并渲染您的应用程序文件执照
2023/7/29 3:26:28 179KB nodejs angular typescript universal
1
培训关于批处理AI的分布式培训此仓库是有关如何使用BatchAI以分布式方式训练CNN模型的教程。
涵盖的场景是图像分类,但是该解决方案可以推广到其他深度学习场景,例如分段和对象检测。
图像分类是计算机视觉应用中的常见任务,通常通过训练卷积神经网络(CNN)来解决。
对于具有大型数据集的大型模型,单个GPU的训练过程可能需要数周或数月。
在某些情况下,模型太大,以致于无法在GPU上放置合理的批处理大小。
在这些情况下使用分布式培训有助于缩短培训时间。
在此特定方案中,使用Horovod在ImageNet数据集以及合成数据上训练ResNet50CNN模型。
本教程演示了如何使用三个最受欢迎的深度学习框架来完成此任务:TensorFlow,Keras和PyTorch。
有许多方法可以以分布式方式训练深度学习模型,包括数据同步和基于同步和异步更新的模型并行方法。
当前,最常见的场景是与同步更新并行的数据-这是最容易实现的,并且对于大多数用例而言已经足够。
在具有同步更新的数据并行分布式训练中,该模型在N个硬件设备之间复制,并且一小批训练样本被划分为N个微批次(参见图2)。
每个设备都
1
在App开发中,对于信息的获取与演示,不可能全部将其获取与演示,为了在用户使用中,给予用户以友好、方便的用户体验,以滑动、下拉的效果动态加载数据的要求就会出现。
为此,该效果功能就需要应用到所需要的展示页面中。
2023/7/28 12:35:34 1.16MB android ListView 下拉刷新 上拉加载
1
大学时候做的纯C语言汉诺塔图形动画演示,其中的exe是可以运行的,但不要放在含中文目录下。
还有论文,论文写得不好,就不放上来了。
2023/7/28 11:29:15 39KB C语言 汉诺塔 动画演示
1
共 1000 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡