当前位置:   article > 正文

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

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
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

  输出的格式如下:
  (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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  1. 输出结果:
    在这里插入图片描述

六、实验结论

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

import java.util.Scanner;

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

    /**
     * 定义下列文法
     * (1)E->iSGE1
     * (2)E1->
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/644593
推荐阅读
相关标签
  

闽ICP备14008679号