四则运算器解读

上传人:ba****u 文档编号:204547448 上传时间:2023-04-26 格式:DOCX 页数:2 大小:11.18KB
收藏 版权申诉 举报 下载
四则运算器解读_第1页
第1页 / 共2页
四则运算器解读_第2页
第2页 / 共2页
资源描述:

《四则运算器解读》由会员分享,可在线阅读,更多相关《四则运算器解读(2页珍藏版)》请在装配图网上搜索。

1、实验 3 四则运算器1. 实验目的:学习Yacc编译器的生成器的基本使用方法。使用bison (和YACC兼容)实现一个 中缀表达式四则运算的计算器。2. 实验步骤一. 阅读Lex和yacc工具.doc和ex和Yacc简明教程.pd f二. 紅ex和yacc工具.doc中有一个中缀表达式四则运算的计算器示例程序hoc.y,输入、 编译、调试、运行该程序,理解程序设计过程和思路。1、lex 程序的结构 分为-定义部分 .规则部分 /用户子程序部分 ,其中规则部分是必须的, 定义和用户子程序部分是任选的。格式为:%规则 %子程序 的输入文件分成三个段,段间用来分隔。上例很好的表明了这个意思。第一个

2、例子是最 短 lex %的可用文件: lex% 输入字符将被一个字符一个字符直接输出。由于必须存在一个规则段,第一个总是要求 存在 %的。2、定义部分定义部分起始于%符号,终止于%符号,其间可以是包括 include 语句、声明语 句在内的 C 语句。%#include stdio.h#include y.tab.hextern int lineno;%3. 规则部分 规则部分起始于%符号,终止于%符号,其间则是词法规则。词法规则由模式和动作两部分组成。模式部分可以由任意的正则表达式组成,动作部分是由C语言语句组成, 这些语句用来对所匹配的模式进行相应处理。需要注意的是, lex 将识别出来的

3、单词存放在 yytext字符数据中,因此该数组的内容就代表了所识别出来的单词的内容。%t ;0-9+.?|0-9*.0-9+ sscanf(yytext,%1f, &yylval.val);return NUMBER; n lineno+;return n; . return yytex+0; %4. 用户子程序部分用户子程序部分可以包含用C语言编写的子程序,而这些子程序可以用在前面的动作中, 这样就可以达到简化编程的目的。下面是带有用户子程序的lex程序片段。/* skipcmnts();. /* rest of rules */%skipcmnts()for ( ; ; )while (i

4、nput()!=*);if(input()!=/)unput(yytextyylen-1);else return;1.yacc 工具yacc 工具是一种语法分析程序生成器,它可以将有关某种语言的语法说明书转换成相应 的语法分析程序,由该程序完成对相应语言中语句的语法分析工作。2. yacc 程序结构在使用yacc工具前,必须首先编写yacc程序,因为有关语法分析程序是根据yacc程序生 成的。 yacc 程序实际上是有关语法规则的说明书,它也是由定义部分、规则部分和子程序 部分组成的。yacc程序的定义部分类似于lex程序的定义部分,只是在其后可带有yacc声 明,其中包括词法单词、语法变量、优先级和结合性信息。 yacc 程序的规则部分由语法规 则和相应的动作组成,子程序部分可以包括在前面规则部分用到的子程序定义。接下来是 main 主程序,它调用 yyparse 子程序来对输入进行语法分析,而 yyparse 反复地调用 yylex 子程序来获得输入单词,在语法出错时可通过yyerror子程序来处理。3. 过程,通过bison工具把calc程序处理,生成.c文件,然后对calc进行编译,得到三. 附录1 有一个 calc 示例程序,编译运行该程序,比较中缀表达式和后缀表达式。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!