构造ll1分析表 c语言,编译原理LL(1)分析器(C语言).pdf

本文档详述了一次关于编译原理的实验,重点在于设计和使用LL(1)语法分析器。实验内容涉及判断输入串'i+i*i'是否符合文法G[E],并给出了文法G[E]的详细定义。通过构造FIRST集和FOLLOW集,展示了LL(1)分析表的构建过程,从而实现对输入串的解析。
摘要由CSDN通过智能技术生成

数学与软件科学学院 实验报告

学期: 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,置#于FOL

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值