LL(1)语法分析C++实现

本文档详细介绍了如何使用LL(1)方法对有理运算文法进行分析,包括消除左递归和公共左因子,构建FIRST集和FOLLOW集,以及生成分析表。通过C++实现的分析器,展示了输入正确和错误语句时的实验结果,验证了LL(1)分析法的有效性。
摘要由CSDN通过智能技术生成

目录

实验题目

流程图

实验步骤

1、给出LL(1)文法

2、FIRST集和FOLLOW集

3、构造分析表

代码步骤

1、分析器代码表示

2、运行函数

实验结果


实验题目

(1)E→E+T | E-T | T

(2)T→T*F | T/F | F

(3)F→P^F | P

(4)P→(E) | i

此文法实际上可以表示加、减、乘、除、乘方运算法则,即有理运算法则。我们采用LL(1)分析法对以上文法进行分析。

流程图

实验步骤

1、给出LL(1)文法

原来的文法中包含左递归和公共左因子,消除(1)(2)式中的左递归和(3)式中的公共左因子。

修改后的文法为:

  (1)E->TE'

  (2)E'->+TE'|-TE'|e

  (3)T->FT'

  (4)T'->*FT'|/FT'|e

  (5)F->PF'

  (6)F'->^F|e

  (7)p->(E)|i

e表示空。

2、FIRST集和FOLLOW集

写出每个非终结符的FIRST集和FOLLOW集

 

FIRST

FOLLOW

E

(,i

),#

E'

+,-,e

),#

T

(,i

+,-,),#

T'

*,/,e 

+,-,),#

F

(,i

<
  • 3
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值