电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

编译原理语法分析器实验报告

编译原理语法分析器实验报告_第1页
1/6
编译原理语法分析器实验报告_第2页
2/6
编译原理语法分析器实验报告_第3页
3/6
下载后可任意编辑西安邮电大学编译原理实验报告学 院 名 称 :计算机学院学 生 姓 名 :高雄伟实 验 名 称 :语法分析器的设计与实现班 级 :计科 1405 班学号 :04141152时间 :2024 年 5 月 12 日 下载后可任意编辑一.实验目的1.熟悉语法分析的过程2.理解相关文法分析的步骤3.熟悉 First 集和 Follow 集的生成二.实验要求对于给定的文法,试编写调试一个语法分析程序:要求和提示: 1)可选择一种你感兴趣的语法分析方法(LL(1)、算符优先、递归下降、 SLR(1)等)作为编制语法分析程序的依据。 2)对于所选定的分析方法,如有需要,应选择一种合适的数据结构,以构造 所给文法的机内表示。 3)能进行分析过程模拟。如输入一个句子,能输出与句子对应的语法树,能 对语法树生成过程进行模拟;能够输出分析过程每一步符号栈的变化情况。 设计一个由给定文法生成 First 集和 Follow 集并进行简化的算法动态模拟三.实验内容1.文法: E->TE’ E’->+TE’|εT->FT’ T’->*FT’|εF->(E)|i: 2.程序描述(LL(1)文法) 本程序是基于已构建好的某一个语法的预测分析表来对用户的输入字符串进行分析,推断输入的字符串是否属于该文法的句子。 基本实现思想:接收用户输入的字符串(字符串以“#”表示结束)后,对用做分析栈的一维数组和存放分析表的二维数组进行初始化。然后取出分析栈的栈顶字符,推断是否为终结符,若为终结符则推断是否为“#”且与当前输入符号一样,若是则语法分析结束,输入的字符串为文法的一个句子,否则出错若不为“#”且与当前输入符号一样则将栈顶符号出栈,当前输入符号从输入字符串中除去,进入下一个字符的分析。若不为“#”且不与当前输入符号一样,则出错。3.推断是否 LL(1)文法 要推断是否为 LL(1)文法,需要输入的文法 G 有如下要求: 具有相同左部的规则的 SELECT 集两两不相交,即: SELECT(A→?)∩ SELECT(A→?)= ? 假如输入的文法都符合以上的要求,则该文法可以用 LL(1)方法分析。 算法描述如下: 把第一条产生式的 SELECT(0)集放到一个临时数组 temp[]中 for(i=1;i<=产生式总数-1;i++) 求 temp 的长度 length if i 指向的当前产生式的左部等于上一条产生式的左部 then 把 SELECT(i)并入到 temp 数组中 If temp 的长度小于 length 加上 SELECT (i)的长度 返回 0 else 把 temp 清空 把 SELECT (i)存放到 temp 中 结...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

编译原理语法分析器实验报告

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部