作者:胡彦本框架是一个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
SSM框架搭建的易买网购物平台,用户可以在该平台实现购物功能
2023/8/3 15:08:39 7.4MB SSM
1
1.该部分内容来自新华三NAVIGATE创客节-黑客松“物联网终端行为分析”第三题:已知一系列经纬度坐标点,在百度地图上画出该坐标点对应的运动轨迹。
2.压缩包包括HTML代码、包含实际经纬度信息的TXT文档、用于搭建本地HTML服务器的HFS软件。
1
本项目是基于SSM+Easyui+Maven技术搭建的框架,做得主要是一个项目管理系统,让项目组长给每个组员下发任务,然后进行任务监督,并且有测试人员进行相应的测试和提出bug。
2023/8/3 0:05:15 2.39MB Spring SpringMVC Mybatis Easyui
1
老外写的一个程序,双输入单输出,并不是simulink模块,代码有点长,但是备注很详细,看懂问题不大。
2023/8/2 21:09:09 35KB 船舶航向 模糊控制 matlab
1
介绍了localdns的搭建方法以及需要的bind、安装包等文件。
2023/8/2 13:08:14 7.05MB Local Dns搭建
1
当下智能化生产规模日益扩大,FANUC机器人在工业生产中应用广泛.针对现阶段工业生产中FANUC机器人难以实现同外部进行实时批量数据交互的问题,以FANUC机器人内核KAREL语言为切入点,搭建实现机器人同外部数据交互模型,通过算法设计及KAREL编程实现机器人与外部基于tcp/ip协议的通信,进而完成数据实时批量交互.Roboguide仿真模拟以及在实际FANUC绿色机器人工作平台上的实验验证表明所构建的数据交互方法能满足工业生产中对机器人实时运行数据采集的需求.
2023/8/1 23:34:51 11.74MB FANUC keral 中文资料
1
HIL硬件在环(hardware-in-the-loop,HIL)仿真被证明是一种有效的解决方法。
该技术能确保在开发周期早期就完成嵌入式软件的测试。
到系统整合阶段开始时,嵌入式软件测试就要比传统方法做得更彻底更全面。
该篇文章介绍了硬件在环搭建流程
2023/8/1 13:51:03 300KB HIL
1
引子:自上世纪末KentBeck提出TDD(Test-DrivenDevelopment)开发理念以来,开发和测试的边界变的越来越模糊,从原本上下游的依赖关系,逐步演变成你中有我、我中有你的互赖关系,甚至很多公司设立了新的QE(QualityEngineer)职位。
和传统的QA(QualityAssurance)不同,QE的主要职责是通过工程化的手段保证项目质量,这些手段包括但不仅限于编写单元测试、集成测试,搭建自动化测试流程,设计性能测试等。
可以说,QE身上兼具了QA的质量意识和开发的工程能力。
我会从开发的角度分三期聊聊QE这个亦测试亦开发的角色所需的基本技能。
前情概要:作为QE三部曲的最后
1
针对智能家居视频监控的实际需求,设计了一种基于ARM11+Linux系统组成的无线视频监控系统,系统选用S3C6410为主控制器,以USB摄像头为视频采集设备,采用基于IEEE802.11g协议的无线局域网进行视频传输。
详细阐述了嵌入式Linux操作系统的移植与烧写,内核的裁剪与编译,以及搭建了Mjpg-streamer视频流服务器。
测试结果表明,该系统成本低廉、便携易用且运行稳定性,无线带宽和传输速率均能满足实时监控的要求,适合家居监控环境的应用。
1
共 1000 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡