• 大小: 3KB
    文件类型: .java
    金币: 2
    下载: 1 次
    发布日期: 2021-07-14
  • 语言: Java
  • 标签: 编译原理  

资源简介

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 < string.length(); 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();

评论

共有 条评论