資源簡介
對于文法:
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? 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
評論
共有 條評論