- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验四算符优先分析算法.doc
实验四:算符优先分析算法
1.实验目的:掌握算符优先分析析程序的分析、设计与实现的基本技术与一般方法。
2.实验题目: 编写并上机调试完成识别由下列文法所定义的表达式的算符优先分析程序。
E(E+T | E-T | T
T(T*F | T/F |F
F((E) | i
3.实验步骤
分析
判断为算符优先文法:
文法没有A-…BC…且BC均为非终结符,因此它为OG文法
文法没有同时存在①A-…ab…或A-….aBb….
②A-…aB…且B=b….或B=Cb….
③A-…Bb….且B=…a或B=…aC
文法为算符优先文法
求FirstVT集和LastVT集
FirstVT(E)={+, - , * , / , ( , i } LastVT(E)= {+, - , * , / , ) , i }
FirstVT(T)={* , / , ( , i } LastVT(T)= {* , / , ( , i }
FirstVT(F)={ ( , i } LastVT(F)={ ) , i }
根据FirstVT和LastVT集构造算符优先表
+ - * / ( ) i # + - * / ( = ) i # = 程序算法流程图
程序参考源码
/****************************************/
/* 程序名称: 算符优先分析程序 */
/* 程序用途: 编译原理实验(四) */
/* 编写日期: 2005年11月15日 */
/* 实验题目: 对下列文法 */
/* E-E+T|E-T|T */
/* T-T*F|T/F|F */
/* F-(E)|i */
/* 编写算符优先分析程序 */
/* 程序版本: 1.0 Final */
/* 程序作者: 黄记瑶 B0226047 */
/* 作者邮箱: hjy2920@163.com */
/****************************************/
/****************************************/
/* 程序相关说明 */
/* 0=+ 1=- 2=* 3=/ 4=( 5=) 6=i 7=# */
/* */
/* 算符优先关系表 */
/* ------------------------------------------------------*/
/* + - * / ( ) i # */
/* + */
/* - */
/* * */
/* / */
/* ( = ? */
/* ) ? ? */
/* i ? ? */
/* # ? = */
/* ------------------------------------------------- */
/****************************************/
#include stdio.h
#include malloc.h
struct Lchar{
char char_ch;
struct Lchar *next;
}Lchar,*p,*h,*temp,*top,*base;
int table[8][8]={{1,1,-1,-1,-1,1,-1,1},
{1,1,-1,-1,-1,1,-1,1},
{1,1,1,1,-1,1,-1,1},
{1,1,1,1,-1,1,-1,1},
{-1,-1,-1,-1,-1,-1,-1,0},
{1,1,1,1,0,1,0,1},
{1,1,1,1,0,1,0,1},
{-1,-1,-1,-1,-1,0,-1,-1}};
/*存储算符优先关系表,大于为1,小于或等于为-1,其它为0表
文档评论(0)