^ | You have to believe, there is a way. The ancients said:" the kingdom of heaven is trying to enter". Only when the reluctant step by step to go to it 's time, must be managed to get one step down, only have struggled to achieve it. -- Guo Ge Tech 编 译 原 理 实 验 报 告 题目:对下面的文法对象,使用 c 语言构造它的预测分析程序;并任意给一算术表达式进行分析测试. 分析对象对象定义如下: 算术表达式 项 | 算术表达式 + 项 | 算术表达式 - 项 项 因式 | 项 * 因式 | 项 / 因式 因式 变量 | (算术表达式) 变量 字母 字母 A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z 实验日期:2005-6-15 至 2005-6-30 指导教师: 吴取劲 班级:计算机 029 班 学号:20029440913 姓名:陈 强 一、分析 语法分析部分我们我们采用ll(1)方法实现,采用ll(1)方法实现语法发分析要求文法满足以下要求: 一个文法能否用确定的自顶向下分析与文法中相同左部的每个产生式右部的开始符号集合有关,当有右部能=*=>ε 时则与其左部非终结符的后跟符号集合也有关,此外在产生式中不存在左递归即经过压缩,无左递归,无回溯。它的基本思想是从左到右扫描源程序,同时从识别符号开始生成句子的最左推导,并只向前查看一个输入符号,便能唯一确定应选择的规则。 下面将确切地定义满足确定的自顶向下分析条件的文法即LL(1)文法及LL(1)文法的判别并介绍如何对非LL(1)文法进行等价变换问题,也就是消除一个文法中的左递归和左公共因子。 注意: 一个文法中含有左递归和左公共因子绝对不是LL(1)文法,所以也就不可能用确定的自顶向下分析法,对此结论可以证明。然而,某些含有左递归和左公共因子的文法在通过等价变换把它们消除以后可能变为LL(1)文法,但需要用LL(1)文法的定义判别,也就是说文法中不含左递归和左公共因子,只是LL(1)文法的必要条件。 LL(1) 文法的定义(5 种定义): 一个文法符号串的开始符号集合定义如下: 定义1 . 设G=(VT,VN,S,P)是上下文无关文法,α 是任意的文法符号串 ,FIRST(α )是从α 推导出的串的开始符号的终结符集合。。。。 FIRST(α )={a|α =*=>aβ ,a∈VT,α ,β ∈V*} 若α =*=>ε ,则规定ε ∈FIRST(α ). 当一个文法...