最新编译原理语法分析Word下载.docx

上传人:b****6 文档编号:16021628 上传时间:2022-11-17 格式:DOCX 页数:24 大小:20.23KB
下载 相关 举报
最新编译原理语法分析Word下载.docx_第1页
第1页 / 共24页
最新编译原理语法分析Word下载.docx_第2页
第2页 / 共24页
最新编译原理语法分析Word下载.docx_第3页
第3页 / 共24页
最新编译原理语法分析Word下载.docx_第4页
第4页 / 共24页
最新编译原理语法分析Word下载.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

最新编译原理语法分析Word下载.docx

《最新编译原理语法分析Word下载.docx》由会员分享,可在线阅读,更多相关《最新编译原理语法分析Word下载.docx(24页珍藏版)》请在冰豆网上搜索。

最新编译原理语法分析Word下载.docx

//用户所定义的标识符的值

intl;

//记录换行符的个数,即记录源文件的行数

}yufa0,yufa1,yufa2[1000];

//yufa1用于保存各个单词,yufa1用于词法分析过程;

yufa0主要用于语法分析;

charch;

intmm=0;

//结构体数组下标

intline=0;

//出错位置

//charch='

'

;

stringkey[15]={"

begin"

"

end"

if"

then"

else"

while"

write"

read"

"

do"

call"

const"

var"

procedure"

program"

odd"

};

//预设保留字

voidprog();

voidblock();

voidcondecl();

void_const();

voidvardecl();

voidproc();

voidbody();

voidstatement();

voidlexp();

voidexp();

voidterm();

voidfactor();

voiderror0()

cout<

<

"

program标示符出错"

<

endl;

exit(0);

//出错即退出

}

voiderror1()

第"

line<

行缺少分号"

voiderror2()

行标识符(变量名)出错"

voiderror3()

常量未声明(缺少const)"

voiderror4()

常量未赋值"

voiderror5()

赋值号出错或者缺少赋值号"

voiderror6()

line<

变量未声明(缺少var)"

voiderror7()

行缺少右括号"

voiderror8()

行缺少左括号"

voiderror9()

行缺少参数"

voiderror10()

行procedure错误"

voiderror11()

行缺少end(begin与end不匹配)"

voiderror12()

行缺少then(if与then不匹配)"

voiderror13()

行缺少do(while与do不匹配)"

voiderror14()

行调用过程缺少标识符"

voiderror15()

voiderror16()

行条件语句出错(缺少界符)"

voidprog()//程序的递归子程序实现

line++;

if(yufa0.SYM=="

)//program

{

mm++;

yufa0.SYM=yufa2[mm].SYM;

if(yufa0.SYM=="

biaoshifu"

)//<

id>

即标识符

{

mm++;

if(yufa0.SYM=="

)//;

{

mm++;

block();

}

elseerror1();

//缺少;

}

elseerror2();

//缺少标识符或者标识符错误

}

elseerror0();

\n\n--------------------------语法分析结束------------------------\n\n"

voidblock()//程序体的递归子程序实现,<

block>

→[<

condecl>

][<

vardecl>

proc>

]<

body>

condecl();

vardecl();

proc();

body();

voidcondecl()//常量说明的递归子程序实现,<

→const<

const>

{,<

};

)//const

_const();

//<

while(yufa0.SYM=="

"

)//,逗号

_const();

}//<

elseerror1();

elseerror3();

//缺少常量定义const

void_const()//常量,<

→<

:

=<

integer>

fuzhi"

didit"

elseerror4();

//常量未赋值

elseerror5();

//缺少赋值号,或者赋值号错误

elseerror2();

//缺少标识符

voidvardecl()//变量说明的递归子程序实现,<

→var<

)//<

while(yufa0.SYM=="

)//,

//下一单词

if(yufa0.SYM=="

{

mm++;

}

elseerror2();

//缺少标识符即缺少变量

}//下一单词

elseerror2();

elseerror6();

//变量未声明

voidproc()//<

→procedure<

(<

});

{;

)//procedure

("

)//(

)//<

while(yufa0.SYM=="

)//,

{

mm++;

if(yufa0.SYM=="

{

mm++;

}

elseerror2();

}

)"

)//)

if(yufa0.SYM=="

)//;

//下一单词---------

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1