编译原理-实验二-LL(1)语法分析程序的设计

一、实验目的

         了解LL(1)分析器的基本构成及用自顶向下的LL(1)方法对表达式进行语法分析的方法,掌握LL(1)语法分析程序的构造方法。

二、实验内容

         根据LL(1)语法分析算法的基本思想,设计一个对给定文法进行LL(1)语法分析的程序,并用C、C++或Java语言编程实现。要求程序能够对从键盘输入的任意字符串进行分析处理,判断出该输入串是否是给定文法的有效句子,并针对该串给出具体的LL(1)语法分析过程。

三、实验要求​​​​​​

对给定文法G[S]:

S->AT      

A->BU    

T->+AT|$     

U->*BU|$   

B->(S)|m

其中,$表示空串。

1、手工判断上述文法G[S]是否LL(1)文法,若不是,将其转变为LL(1)文法;

2、对转变后的LL(1)文法手工建立LL(1)分析表;

3、根据清华大学出版编译原理教材上算法思想,构造LL(1)分析程序;

4、用LL(1)分析程序对任意键盘输入串m+m*m#进行语法分析,并根据栈的变化状态输出给定串的具体分析过程。

四、运行结果示例

       从任意给定的键盘输入串:

               m+m*m#;

       输出:

                                                      用LL(1)分析法分析符号串m+m*m#的过程

Step

Stack

String

Rule

Step

Stack

String

Rule

1

#S

m+m*m#

S->AT

10

#TUm

m*m#

  • 39
    点赞
  • 231
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值