当前位置:文档之家› 算符优先实验报告

算符优先实验报告

一、程序功能
实现算符优先分析算法,完成以下描述算术表达式的算符优先文法的算符优先分析过程。

G[S]:S->#E#
E->E+T|T
T->T*F|F
F->P^F | P
P->(E)|i
二、主要数据结构
char VT[]定义符号表;struct type{char origin; char array[5]; int length;}定义产生式类型;table[][]定义优先关系矩阵。

三、程序结构
int locate(char s[],char c) 辅助函数,在一个字符串中查找某特定字符;
int Find(type G[],char s[],int m,int n) 查找与已搜索出的短语对应的产生式,返回该产生式的序号;void doScan()对输入串进行分析的主控函数;void print(char s[],int k,int tag,char str[],int i,char action[])输出分析过程的函数。

在find()和doScan()中调用locate()函数,在doScan()中调用find()和print()函数,在main()中调用doScan()函数。

流程图:
四、程序测试
测试句子:i+i*i
结果:
测试句子:(i+i)*i
结果:
五、实验总结
本实验重点解决算符优先矩阵的构造和算符优先算法的实现,我认为难点是构造优先矩阵,这个就需要掌握方法多练习,优先算法只需将PPT上的流程图一步一步地转化为代码就可以了。

总体来说,本实验比较简单。

相关主题