文档介绍:语法分析实验报告一、实验目的:.了解单词(内部编码)符号串中的短语句型结构形成规律。.理解和掌握语法分析过程中语法分析思想(,)的智能算法化方法。二、实验内容:构造自己设计的小语言的语法分析器:.小语言的语法描述(语法规则)的设计即文法的设计;.把文法形式符号中所隐含的信息内容挖掘出来并用或的资料形式(分析表)表示出来;.语法分析的数据输入形式和输出形式的确定;.语法分析程序各个模块的设计与调试。主要设备和材料:电脑、操作系统、语言系统三、实验分工:学号姓名实验分工实验代码设计及编写检查校对代码写电子版实验报告查找、分析、整理资料查找、分析、整理资料四、实验步骤:、语法规则①<程序>{<变量定义语句><赋值语句><条件语句><循环语句>}②<变量定义语句>变量{,变量};③<赋值语句>变量:<表达式>;④<表达式>标识符{运算符标识符};⑤<标识符>变量常量⑥<运算符>*><⑦<条件语句><语句>[<语句>]⑧<语句>(表达式)[]{赋值语句条件语句循环语句}[]⑨<语句>[]{赋值语句条件语句循环语句}[]⑩<循环语句>(表达式)[]{赋值语句条件语句循环语句}[]<输出语句>表达式注:若语句、语句、循环语句中出现,后面的必须出现,即与同对出现注:、后的"(",")"表示终结符,而不是定义成分优先的说明符号、分析表::变量常量,;运算符()变量定义>②>②>②>②赋值语句>③>③>③>③>③条件语句>⑦>⑦>⑦>⑦>⑦>⑦>⑦循环语句>⑩>⑩>⑩>⑩>⑩>⑩>⑩输出语句>>>分析表(续):变量定义>②赋值语句条件语句>⑦>⑦>⑦>⑦循环语句>⑩>⑩>⑩输出语句>调试和测试五、源代码(见附录):六、实验总结:本实验在词法分析的基础上,对提取出的标识符进行语法判断。对已有的语法规则运用()文法判别并进行构造分析表时,遇到的最大困难是:当发生规约冲突时,该如何处理。如对于产生式>,当对进行规约时,满足语法规则的β(用户输入串中当前要进行规约的标识符)只有有限种,而不满足的却有无限种情况。当发生规约冲突时,如何在这无限种情况中,确定冲突的具体信息,以便用户查找。在反复的尝试和验证中,我们发现发生冲突的用户输入串满足一定的规律,且按这种规律可以把这无限种情况化归为有限类,于是我们找出其中规律并进行划分,然后再对这些有限类冲突进行处理。七、实验心得:通过这次实验有以下几点收获:.()的构造使得对理论的知识理解的更加透彻。其中()分析表构造了很多遍,一直无法得到正确结果,这是恒心的考验。.在写程序中用类数组来存放单词属性使得对单词各项值的调用更加方便,特别是对出错信息的检测有很大的作用。.本实验是在词法基础上的更进一步,在词法程序上添加语法程序,更加理解二者之间的关系。词法分析为语法分析提供了词法单元,方便分析,使程序模块化,易于读懂。附录: <> <> <> <> <> <> ; 最大代码长度变量最大个数常量最大个数关键字数量运算符最大个数运算符最大个数界符最大个数 { ;标识符所在表的下标; 标识符的类型; 标识符所在表的行数[]; 标识符所在表的名称 }; ;表的表项总数 [][];标识符表 [][];数字表 ;变量表的下标 ; 常量表的下标 ;错误标志;表的下标索引 遇到加,遇到减 ;遇到加 *[];关键字 *[]{"","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""};单目运算[]{'','','*','','','','<','>'}; 双目运算符*[]{"<",">","","<>"}; 界符[]{'(',')',',',';','.','[',']',':','{','}','"'};([],){ ; <<"\:"; () { :<<"第"<<<<"行"<<<<"变量的长度超过限制!\"; ; :<<"第"<<<<"行"<<<<"小数点错误!\"; ; :<<"第"<<<<"行"<<<<"常量的长度超过限制!\"; ; } }([]){ ; (<)对输入的字符扫描 {****************处理空格和*************************** 忽略空格和([]''[]) {;}*************************处理换行符********************* 遇到换行符,行数加([]) { ;}***************************标识符**********************