实验:使用Java完成递归下降分析法设计与实现

一、实验目的

  根据某一文法编制调试递归下降分析程序,以便对任意输入的符号串进行分析。本次实验的目的主要是加深对递归下降分析法的理解。

二、实验内容

  程序输入/输出示例(以下仅供参考):
  对下列文法,用递归下降分析法对任意输入的符号串进行分析:

1)E- TG
(2)G- +TG|—TG
(3)G- ε
(4)T- FS
(5)S- *FS|/FS
(6)S- ε
(7)F- (E)8)F- i

  输出的格式如下:
  (1) 递归下降分析程序,编制人:姓名,学号,班级
  (2) 输入一个以#结束的符号串(包括+—*/()i#):在此位置输入符号串例如:i+i*i#
  (3) 输出结果:i+i*i#为合法符号串
  备注:输入一符号串如i+i*#,要求输出为“非法的符号串”。
  注意:
  1. 表达式中允许使用运算符(±*/)、分割符(括号)、字符I,结束符#;
  2. 如果遇到错误的表达式,应输出错误提示信息(该信息越详细越好)。

三、实验方法

  1. 实验方法:采用Java程序语言进行设计,有控制台根据提示语句进行输入
  2. 实验原理:递归下降分析法
  3. 实验工具:IntelliJ IDEA
    #四、实验步骤
  4. 对递归下降分析算法进行详细分析;
  5. 优化文法(合并化简,消除左递归),作为程序执行的文法进行输入
  6. 编写程序,采用递归方法调用函数,getchar方法获取下一个字符,index作为当前字符下标进行参考判断。

五、实验结果

  1. 实验输入:
请输入测试次数:3
请输入一个以#结束的符号串:
i+i*i#
请输入一个以#结束的符号串:
i+i/i#
请输入一个以#结束的符号串:
i+i*#
  1. 输出结果:
    在这里插入图片描述

六、实验结论

  本实验利用自定义的源程序对递归下降分析法进行了实现和测试,结果符合预期的结果
  测试源码如下:

import java.util.Scanner;

public class Recursive {
   
    static String str = "";        //待测试语句
    static int index = 0;                  //记录当前读到的序号

    /**
     * 定义下列文法
     * (1)E->iSGE1
     * (2)E1->SGE1|ε
     * (3)G->+TG|—TG|ε
     * (4)S->*FS|/FS|ε
     * (5)F->(E)|i
     */
    
    public static void main
  • 7
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值