資源簡介
參考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
- 上一篇:基于Java的圖形界面的文檔編輯器的設計與實現
- 下一篇:java 影碟出租管理系統
評論
共有 條評論