1 / 10
文档名称:

递归下降语法分析程序设计.doc

格式:doc   大小:60KB   页数:10页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

递归下降语法分析程序设计.doc

上传人:2028423509 2022/4/21 文件大小:60 KB

下载得到文件列表

递归下降语法分析程序设计.doc

相关文档

文档介绍

文档介绍:-
. z
编译方法实验报告
实验名称:简单的语法分析程序设计
实验要求
功能:对简单的赋值语句进展语法分析
随机用来识别小写字母的,如果是小写字母的话,放入字符表,不是的话,输出语法错误。函数比拟简单,代码如下:
if(islower(s[sym]))
{
-
. z
Table[list_n][0] = s[sym]; //把读取的小写字母存入符号表,便于分析是生成中间代码
Table[list_n][1] = '\0';
list_n++;
sym++;
}
else
{
printf("Operand Errors!\n"); //运算对象错误
SIGN=1;
e*it(0);
}
函数void A( ) // A -> V:=E
void A() // A -> V:=E 函数主要用来实现赋值的操作,流程图如图1所示。
图1 A( ) 函数流程图
函数void E() //E -> TE'
函数E〔〕里面主要递归调用函数T( )和E'( )。当没有出现语法错误时就可正常的运行。函数比拟简单,代码如下:
{
if(SIGN==0)
{
T();
E1();
}
}
T( ) // T -> FT'
函数T( )里面主要递归调用函数F ( )和T''( )。当没有出现语法错误时就可正常的运行。函数比拟简单,代码如下:
if(SIGN==0)
{
F();
T1();
}
-
. z
E1( ) //E'-> +TE'|-TE'|null
函数void E1() //E'-> +TE'|-TE'|null,主要用来实现加减法的语义分析。流程图如图2所示。
图2 E1 ( ) 函数流程图
T1() // T'-> *FT'|/FT'|null
函数void T1() // T'-> *FT'|/FT'|null,主要用来实现乘除法的语义分析。流程图如图3所示。
图3 T1 ( ) 函数流程图


用例1为实验要求上的的用例。测试结果图4所示。
图4 测试用例1及结果截图

用例2为出现大写字母,出现报错。测试结果图5所示。
图5 测试用例2及结果截图

用例3为随意编写用例。测试结果图6所示。
图6 测试用例3及结果截图
代码清单
#include<>
#include<>
#include<>
#include <>
v