资源简介

参考C语言版本,用Java写的递归下降分析程序,能对词法分析程序所提供的单词序列进行语法检查和结构分析。被分析的语言应该是PL/0,语法表示如下: (1)<程序>::=begin<语句串>end (2)<语句串>::=<语句>{;<语句>} (3)<语句>::=<赋值语句> (4)<赋值语句>::=ID:=<表达式> (5)<表达式>::=<项>{+<项> | —项>} (6)<项>::=<因子>{*<因子> | /<因子>} (7)<因子>::=ID | NUM | (<表达式>) 用Eclipse做的,有运行结果截图。

资源截图

代码片段和文件信息

package org.test;

import org.test.WordAnalyzer;

public class RecursiveDescentAnalyzer {
WordAnalyzer wa = new WordAnalyzer();
boolean isError = false;

public void lrparser() {
if (wa.syn == 1) { //“begin”
wa.scaner();
yujuchuan();
if (wa.syn == 6) { //“end”
wa.scaner();
if (wa.syn == 0 && isError == false) //“end”之后是“#”并且没有出错,则分析成功
System.out.println(“语法分析成功!“);
} else {
if (isError == false) //之前分析都成功,但没有“end”
System.out.println(“语法分析出错!缺少“end”“);
isError = true;
}
} else {
System.out.println(“语法分析出错!缺少“begin”“);
isError = true;
}
}

/*
 * 分析语句串
 */
public void yujuchuan() {
statement(); //分析第一条语句
while (wa.syn == 26) {// 为“;”时,分析下一条语句
wa.scaner();
if (wa.syn == 6) break;
statem

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件         232  2017-12-13 08:22  .classpath
     文件         407  2017-12-13 08:22  .project
     目录           0  2017-12-13 08:22  src\
     目录           0  2017-12-13 08:22  src\org\
     目录           0  2017-12-23 14:22  src\org\test\
     文件        2908  2017-12-23 16:27  src\org\test\RecursiveDescentAnalyzer.java
     文件        2289  2017-12-25 21:14  src\org\test\WordAnalyzer.java
     文件        6542  2017-12-25 21:26  实验结果1.PNG
     文件        6542  2017-12-25 21:27  实验结果2.PNG

评论

共有 条评论