编译原理语法说课.doc

《编译原理》课程 实验报告 哈尔滨工程大学软件学院 2015年5月 实验2:语法分析 一、实验目的 巩固对语法分析的基本功能和原理的认识。 通过对语法分析表的自动生成加深语法分析表的认识。 理解并处理语法分析中的异常和错误。 二、实验内容 本程序是基于已构建好的某一个语法的预测分析表来对用户的输入字符串进行分析,判断输入的字符串是否属于该文法的句子。 基本实现思想:接收用户输入的字符串(字符串以“#”表示结束)后,对用做分析栈的一维数组和存放分析表的二维数组进行初始化。然后取出分析栈的栈顶字符,判断是否为终结符,若为终结符则判断是否为“#”且与当前输入符号一样,若是则语法分析结束,输入的字符串为文法的一个句子,否则出错若不为“#”且与当前输入符号一样则将栈顶符号出栈,当前输入符号从输入字符串中除去,进入下一个字符的分析。若不为“#”且不与当前输入符号一样,则出错。 若栈顶符号为非终结符时,查看预测分析表,看栈顶符号和当前输入符号是否构成产生式,若产生式的右部为ε,则将栈顶符号出栈,取出栈顶符号进入下一个字符的分析。若不为ε,将产生式的右部逆序的入栈,取出栈顶符号进入下一步分析。 程序流程图: 本程序中使用以下文法作对用户输入的字符串进行分析: E→TE’ E’→+TE’|ε T→FT’ T’→*FT’|ε F→i|(E) 该文法的预测分析表为

文档评论(0)

1亿VIP精品文档

相关文档