实验四-语法分析的yacc实现实验报告
6页1、实验四语法分析的yacc实现实验报告题目语法分析的yacc实现姓名及分工康黎明 SWE10029陈俊杰 SWE10031许冬青 SWE10033王吉 SWE10028日期2012-12-20一、实验目的:加深对语法分析器工作过程的理解;熟练掌握yacc工具。二、实验分工:小组成员共同分析实验过程,在老师的指导分析下,完成了完整的程序编码。三、程序说明:1 程序输入示例:测试程序保存成文件input.c,Yacc的main()函数从input.c读取字符并进行分析,将用到的文法规则输出输入C语言程序为: main() a = 10*(b+2);2程序输出示例运行Yacc程序,输出窗口直接显示运行结果:四、 实验说明:编译环境说明:Windows下的Visual C+文法说明:0. program main() expression_stmt 1. expression_stmt expression ; | ;表达式语句有一个可选的且后面跟着分号的表达式。这样的表达式通常求出它们一方的结果。因此,这个语句用于赋值和函数调用。2. expression var = expression |
2、 simple-expression3. var ID | ID expression 表达式是一个变量引用,后面跟着赋值符号(等号)和一个表达式,或者就是一个简单的表达式。赋值的语义为:首先找到由变量var的地址,然后对赋值符右边的子表达式进行求值,再将子表达式的值存储到给定的地址。这个值也作为整个表达式的值返回。var是简单的整型变量或下标数组变量。需要检查下标值为非负,但不进行下标越界检查。建议:可实现var ID;根据实际情况实现var ID expression 数组变量的识别。4. simple-expression additive-expression relop additive-expression | additive-expression5. relop = | | = | = |!=6. additive-expression additive-expression addop term | term7. addop + | - 8. term term mulop factor | factor9. mulop * | / 加法表达式和项表示了算术操作符的结
3、合性和优先级。10. factor ( expression ) | var | NUM因子是围在括号内的表达式;或一个变量,求出其变量的值;或者一个函数调用,求出函数的返回值;或者一个NUM,其值由词法分析器确定。其他说明:实验过程遇到的问题:1、.lex部分出现问题.|n应为分号(;),表示不做任何操作。2、delim为对Tab键做清除跳过操作。3、Yacc部分%nonassoc LOWER_THAN_ELSE ,%nonassoc ELSE;为消除歧义作用。4、%start program开始按照写好的文法对Input进行分析,并打印出每一条文法结果。五、 源程序:1、 Lex代码(读出token)%#include #include extern char* yylval;int line_counter = 1;%letterA-Za-zdigit0-9numberdigit+delim t+keywordmain|while|if|else|for|break|continue|int|char|voididletter(letter|digit)*%delim;main
《实验四-语法分析的yacc实现实验报告》由会员枫**分享,可在线阅读,更多相关《实验四-语法分析的yacc实现实验报告》请在金锄头文库上搜索。
2023年阿信开讲啦演讲稿.docx
2019年石拱涵施工工艺流程图
2023家长工作计划1范文.docx
2023播音员自我介绍1范文.docx
市供水公司2023年安全生产情况汇报.docx
工厂设备租赁合同范文(四篇).doc
学校宿舍管理中心年度工作计划(二篇).doc
2018元宵节作文400字_节日作文
营建文体活动中文化体系的思索
2023环保主题演讲稿451范文.docx
2023年河北省承德市兴隆县雾灵山镇前雾灵山村社区工作人员考试模拟题及答案
配电室着火应急预案
小班科学《找种子》教案.doc
XX开展“新目标、新思路、新举措”主题宣教活动情况总结.docx
传染病消毒隔离制度标准版本(四篇).doc
精益管理标语自创精益标语
国开课网上五个任务的答案
初中七年级语文专题练习二文学常识新人教版试题
2023年农资打假护农工作办法.docx
“气血”与身体健康的关系讲解
2024-01-03 4页
2023-12-10 3页
2022-12-02 6页
2023-03-21 3页
2023-06-08 3页
2022-10-30 6页
2023-08-26 1页
2023-06-22 3页
2023-08-26 2页
2023-07-04 2页