文档详情

编译原理LL分析器C语言.pdf

发布:2017-06-16约1.16万字共11页下载文档
文本预览下载声明
数学与软件科学学院 实验报告 学期: 2015 至 2016第 2 学期 2016 年 4 月 15 日 2013 5 课程名称: 编译原理 专业: 信息与计算科学 级 班 实验编号: 3 实验名称: LL(1)分析器 指导教师: 王开端 学生姓名: 李丹 学号: 2013060510 实验成绩: 实验三 LL(1)分析器 实验目的: 根据书本知识和查阅相关资料,设计一个LL(1)语法分析器。 实验内容: 利用所设计的LL(1)语法分析器判断输入串i+i*i 是否为文法G[E]的句子。文 法G[E]如下: G[E]: E TE E TE| T FT T*FT| F  (E)|i 实验步骤: 1LL(1)分析法 LL(1)分析法又称预测分析法,是一种不带回溯的非递归自顶向下分析法。 LL(1)的含义是:第一个L 表明自顶向下分析是从左至右扫描输入串的;第二个 L “1” 表明分析过程中将用最左推导; 表明只需向右查看一个符号就可以决定如 何推导 (即可知用哪一个产生式进行推导)。 LL(1) 1 分析器结构如图 : 图1 LL(1)分析器 使用LL(1)分析法将会涉及到LL(1)分析表,而分析表又会涉及到FIRST 集 和FOLLOW 集。 2FIRST 集构造 X FIRST(X) 对文法中的每一个非终结符 构造 ,其方法是连续使用以下规则, 直到每个集合的FIRST 不再增大为止。 若有产生式X  a...,且aVT ,则把a 加入到FIRST(X)中;若存在X  , ε FIRST(X) 则将 也加入到 中。 若有X  Y...且Y V ,则将FIRST(Y)中的所有非ε元素 (记为“\{ε}”)都 N 加入到FIRST(X)中;若有X  YY ...Y ,且Y ~ Y 都是非终结符,而Y ~ Y 的候 1 2 K 1 i 1 i Y 选式都有ε存在,则把FIRST( )(j 1,2,...i)的所有非ε元素都加入到FIRST(X)中;j 特别是当Y ~ Y 均含有ε产生式时,应把ε也加入到FIRST(X)中。 1 k 文法G[E]的FIRST 集如下: 1 FIRST(E’) {+,ε} FIRST(T’) {*,ε} FIRST(F) {(,i} () ; ; ; 2 T F...和E T... FIRST(F)FIRST(T)FIRST(E) ( )由 知 ,即有 FIRST(T) FIRST(E) FIRST(F) {(,i}; 3FOLLOW 集构造 对文法G[S]的每一个非终结符A 构造FOLLOW(A),其方法是连续使用以下 规则,直到每个集合的FOLLOW 不再增大为止。 对文法开始符号S,置#于FOLLOW(S)
显示全部
相似文档