資源簡介
1.定義部分:定義常量、變量、數據結構。
2.初始化:從文件將輸入符號串輸入到字符緩沖區中。
3.利用遞歸下降分析法分析,對每個非終結符編寫函數,在主函數中調用文法開始符號的函數。
代碼片段和文件信息
import?java.util.Scanner;
public?class?byyl_2?{
char?i[]=new?char[50];
char?o[]=new?char[50];
char?ch;
int?lengthi1=0flag=1;
public?static?void?main(String[]?args)?{
byyl_2_2?s=new?byyl_2_2();
int?fj=0;
System.out.println(“請輸入長度<50的字符串(以#號結束)“);
Scanner?scanner=new?Scanner(System.in);
String?string=scanner.next();
for?(;?j? s.i[j]=string.charAt(j);
}
s.length=j;
s.ch=s.o[0]=s.i[0];
System.out.println(“文法\t分析串\t\t分析字符\t\t剩余串“);
f=s.E1();
if?(f==0)?return;
if?(s.ch==‘#‘)??
{???
System.out.println(“輸入合法“);
}
else?
{
System.out.println(“輸入不合法“);
}
}
int?E1()
{???int?ft;
System.out.print(“E->TG\t“);
??? flag=1;
??? output();
??? output1();
f=T();
if?(f==0)?return(0);
t=G();
if?(t==0)?return(0);
else?return(1);
}
int?E()
{???int?ft;
System.out.print(“E->TG\t“);
flag=1;
output();
output1();
f=T();
if?(f==0)?return(0);
t=G();
if?(t==0)?return(0);
else?return(1);
}
int?T()
{???int?ft;
System.out.print(“T->FS\t“);
flag=1;
output();
output1();
f=F();
if?(f==0)?return(0);
t=S();?
if?(t==0)?return(0);
else?return(1);
}
int??G()
{???int?f;
if(ch==‘+‘)?{??
o[i1]=ch;
System.out.print(“G->+TG\t“);
????flag=0;
????output();
????output1();
ch=i[++i1];
f=T();
if?(f==0)?return(0);
G();
return(1);
}
else?if(ch==‘-‘)
?????{??
o[i1]=ch;
System.out.print(“G->-TG\t“);
????flag=0;
????output();
????output1();
ch=i[++i1];
f=T();
if?(f==0)?return(0);
G();
評論
共有 條評論