资源简介
对于文法:
E->TG
G->+TG|-TG|ε
T->FS
S->*FS|/FS|ε
F->(E)|i
用递归下降分析法对任意输入的符号串进行分析,输入输出参考main函数。
E->TG
G->+TG|-TG|ε
T->FS
S->*FS|/FS|ε
F->(E)|i
用递归下降分析法对任意输入的符号串进行分析,输入输出参考main函数。
代码片段和文件信息
package shixi2;
import java.util.Scanner;
public class Main {
static String str;//整个字符串
static int ptr//游标
len//字符串长度
step;//步骤
static boolean right;
static boolean Advance() {//前进一个字符
if (ptr < len - 1) {
ptr++;
pri(““);
return true;
} else {
return false;
}
}
static void pri(String s) {//输出推导过程
step++;
System.out.println(step + “\t“ + str.charAt(ptr) + “\t“ + s + “\t“
+ str.substring(ptr));
}
static void E() {
pri(“E->TG“);
T();
G();
}
static void G() {
if (str.charAt(ptr) == ‘+‘) {
pri(“G->+TG“);
if (!Advance()) {
return;
}
T();
G();
} else if (str.charAt(ptr) == ‘-‘) {
pri(“G->-TG“);
if (!Advance()) {
return;
}
T();
G();
} else {
pri(“G->ε“);
}
}
static void T() {
pri(“T->FS“);
F();
S();
}
static void S() {
if (str.charAt(ptr) == ‘*‘) {
pri(“S->*FS“);
if (!Advance()) {
return;
}
F();
S();
} else if (str.charAt(ptr) == ‘/‘) {
pri(“S->/FS“);
if (!Advance()) {
return;
}
F();
S();
} else {
pri(“S->ε“);
}
}
static void F() {
if (str.charAt(ptr) == ‘(‘) {
pri(“F->(E)“);
if (!Advance()) {
return;
}
E();
if (str.charAt(ptr) == ‘)‘) {
if (!Advance()) {
return;
}
} else {
Error();
}
} else if (str.charAt(ptr) == ‘i‘) {
pri(“F->i“);
if (!Advance()) {
return;
}
} else {
Error();
}
}
static void Error() {
right = false;
pri(“Error!“);
if (!Advance()) {
return;
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
str = new String(sc.next());
ptr = step = 0;
right = true;
len = str.length();
System.out.println(“步骤\t当前\t产生式\t输入串“);
E();
if (right && ptr == len - 1) {
System.out.println(str + “ is leagal!“);
} else {
System.out.println(str + “ is illeagal!“);
}
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2093 2009-03-18 22:55 shixi2\Main.java
目录 0 2009-03-30 00:30 shixi2
----------- --------- ---------- ----- ----
2093 2
相关资源
- Java 透明按钮 Java透明按钮
- 北大青鸟accp5.0java第四章理论加上机作
- java用spring struts hibernate做的学生成绩
- jsp mysql tomcat学生信息管理系统
- 科研管理系统 java swing mysql
- java真实项目煤矿管理系统
- 基于JAVA的物业收费管理系统源代码
- 东南大学 JAVA课程设计 学生信息管理
- Java大作业 学生成绩管理系统
- java图片轮播代码 可控制
- jsp成绩管理系统jsp servlet javabean
- java编写的迅雷下载器
- 贪吃蛇(java 源码 eclipse项目)
- java实现验证码代码
- 自动出题系统(java 课程设计)
- Java实现的公交查询系统代码
- 实例22 分割一个面板(java绝对新手实
- java 程序设计网页浏览器
- java核心笔记 这是很基础的笔记 我自
- 网吧管理系统-Java
- 高校教材购销系统(java编的)
- 软件工程课程设计报告--java学生管理
- java英汉-汉英互译电子词典程序(顶)
- JAVA写的网络抓包分析程序
- java远程进行telnetftpssh连接的方法及源
- JavaEE图书管理系统95427
- java多线程控制的赛跑程序
- java制作360度全景页面的源码和脚本
- 进制转换器(java)
- java中画带箭头的线
评论
共有 条评论