编译原理实验报告
学 号 姓 名 实验名称 语法分析实验—LL(1) 实验目的 输入:文法的多个产生式或产生式选项。
输出:
产生式中非终结符的first集合和follow集合。
判断该文法是否是LL(1)文法。
建立LL(1)文法的分析表。
对输入的符号串进行LL(1)分析,并给出分析结果。 实验方案 设文法G[S]=(VN,VT,P,S),则首字符集为:
FIRST(α)={a | αaβ,a∈VT,α,β∈V *}。
若αε,ε∈FIRST(α)。
由定义可以看出,FIRST(α)是指符号串α能够推导出的所有符号串中处于串首的终结符号组成的集合。所以FIRST集也称为首符号集。
设α=x1x2…xn,FIRST(α)可按下列方法求得:
令FIRST(α)=Φ,i=1;
若xi∈VT,则xi∈FIRST(α);
若xi∈VN;
① 若εFIRST(xi),则FIRST(xi)∈FIRST(α);
② 若ε∈FIRST(xi),则FIRST(xi)-{ε}∈FIRST(α);
i=i+1,重复(1)、(2),直到xi∈VT,(i=2,3,…,n)或xi∈VN且若εFIRST(xi)或in为止。
当一个文法中存在ε产生式时,例如,存在A→ε,只有知道哪些符号可以合法地出现在非终结符A之后,才能知道是否选择A→ε产生式。这些合法地出现在非终结符A之后的符号组成
原创力文档

文档评论(0)