⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 复件 compile.java.bak

📁 建立《编译原理网络课程》的目的不仅使学生掌握构造编译程序的原理和技术
💻 BAK
📖 第 1 页 / 共 3 页
字号:
          } while(bool);
          
                       
                
       }
       void first2() {       	         	  
       	  int k;
       	  
       	  for (k=0;k<20;k++)
       	     head[k][0]=0;	
       	  for (i=0;i<exn;i++)
       	     for (j=2;j<=express[i][0];j++)
       	     {
       	     	addin4(i,express[i][j]);
       	     	if ((express[i][j]<0)||(!hollow[express[i][j]]))
       	     	     j=20;
       	     }
       }
       void addin4(int x,int y) {
       	  int k;
       	  
       	  if (y<0)
       	  {
       	  	if (!inside2(y,head[x],head[x][0]))
       	  	{
       	  	     head[x][0]+=1;
       	  	     head[x][head[x][0]]=y;
       	  	 }	       	         	  	
       	  }
       	  else
       	  {
       	  	for (k=1;k<=first[y][0];k++)
       	  	     if (!inside2(first[y][k],head[x],head[x][0]))
       	  	     {
       	  	     	head[x][0]+=1;
       	  	     	head[x][head[x][0]]=first[y][k];
       	  	     }       	  	
       	  }
       }
       	  	            	            	         	  
       boolean addin(int x,int y) {
       	  int k;
       	  boolean bool=false;
       	   
       	  for (k=1;k<=first[y][0];k++)
       	       if (!(inside2(first[y][k],first[x],first[x][0])))
       	       {
       	       		bool=true;
       	       		first[x][0]+=1;
       	       		first[x][first[x][0]]=first[y][k];
       	       }
       	  return(bool);       	         	                 	  
       }
       void follow() {
       	  int k;
       	  int circle=0;
       	  boolean bool;
       	  
       	  for (i=0;i<20;i++)
       	       follow[i][0]=0;
       	       
       	  follow[0][0]=1;
       	  follow[0][1]=-100;
       	  //for (i=0;i<ucn;i++)
       	  //	System.out.println(hollow[i]);
       	  do
       	  {
       	  	circle++;
       	  	if (circle>2000)
       	  	{
       	  		showerror();
       	  		break;
       	  	}
       	  	bool=false;
       	  	for (i=0;i<exn;i++)
       	     	     for (j=3;j<=express[i][0];j++)
       	          	  if (express[i][j-1]>=0)
       	                      for (k=j;k<=express[i][0];k++)       	              
       	               	      {
       	              		bool=bool||addin2(express[i][k-1],express[i][k]);
       	              		if ((express[i][k]<0)||(!hollow[express[i][k]]))
       	              			k=20;
       	                      }
       		for (i=0;i<exn;i++)
       		{
       			if (express[i][express[i][0]]>=0)
       			{
       				bool=bool||addin3(express[i][express[i][0]],express[i][1]);
       				for (j=express[i][0]-1;j>=2;j--)
       			     	   if ((express[i][j+1]>=0)&&(hollow[express[i][j+1]]))
       			           {
       			           	bool=bool||addin3(express[i][j],express[i][1]);
       			           	System.out.println(i);
       			           }
       			        else
       			           j=1;
       			}
       		}
       	  } while (bool);
       }
       boolean addin2(int x,int y) {
       	  int k;
       	  boolean bool=false;
       	  

          if (y>=0)
          {
          	for (k=1;k<=first[y][0];k++)
          	     if (!(inside2(first[y][k],follow[x],follow[x][0]))&&(ec[-1-first[y][k]]!='e'))
          	     {
          	     	bool=true;
          	     	follow[x][0]+=1;
          	     	follow[x][follow[x][0]]=first[y][k];
          	     }          
          }
          else          
          	if (!(inside2(y,follow[x],follow[x][0])))
          	{
          		bool=true;
          		follow[x][0]+=1;
          		follow[x][follow[x][0]]=y;
          	}
          return(false);
       }
       boolean addin3(int x,int y) {
       	  int k;
       	  boolean bool=false;
       	   
       	  for (k=1;k<=follow[y][0];k++)
       	       if (!(inside2(follow[y][k],follow[x],follow[x][0])))
       	       {
       	       		bool=true;
       	       		follow[x][0]+=1;
       	       		follow[x][follow[x][0]]=follow[y][k];
       	       }
       	  return(bool);       	         	                 	  
       }
       void buildtable() {
       	  int k;
       	  boolean[] emp=new boolean[20];
       	  boolean bool;
       	  
       	  for (i=0;i<ucn;i++)
       	     for (j=0;j<=ecn;j++)
       	        table[i][j]=-1;
       	        
       	  for (i=0;i<exn;i++)
       	  {
       	  	bool=true;
       	  	for (j=2;j<=express[i][0];j++)
       	  	    if (((express[i][j]<0)&&(ec[-1-express[i][j]]!='e'))||
       	  	   	((express[i][j]>=0)&&!(hollow[express[i][j]])))
       	  	    bool=false;
       	  	emp[i]=bool;
       	  }
       	  	       	  	
       	  for (i=0;i<exn;i++)
       	  {
       	  	for (j=1;j<=head[i][0];j++)
       	  	     if (table[express[i][1]][-1-head[i][j]]==-1)
       	  	     	 table[express[i][1]][-1-head[i][j]]=i;
       	  	     else
       	  	     {
       	  	     	 table[express[i][1]][-1-head[i][j]]=-5000;
       	  	     	 System.out.println(express[i][1]);
       	  	     	 System.out.println(-1-head[i][j]);
       	  	     	 System.out.println("冲突");
       	  	     	 if (ec[-1-head[i][j]]!='e')
       	  	     	      star=5;
       	  	     }
       	  	//if (inside2(-1-atwhere('e',ec,ecn),head[i],head[i][0]))
       	  	if (emp[i])
       	  	     for (j=1;j<=follow[express[i][1]][0];j++)
       	  	          if (follow[express[i][1]][j]==-100)
       	  	          	table[express[i][1]][ecn]=i;
       	  	          else
       	  	          	if(table[express[i][1]][-1-follow[express[i][1]][j]]==-1)
       	  	          	   table[express[i][1]][-1-follow[express[i][1]][j]]=i;
       	  	          	else
       	  	          	{
       	  	          	   table[express[i][1]][-1-follow[express[i][1]][j]]=-5000;
       	  	          	   System.out.println(express[i][1]);
       	  	          	   System.out.println(-1-follow[express[i][1]][j]);
       	  	          	   System.out.println("又冲突");
       	  	          	   if (ec[-1-follow[express[i][1]][j]]!='e')
       	  	          	   	star=5;
       	  	          	}
       	  }
       	  
       	         	  
       	  for (i=0;i<ucn;i++)
       	  {
       	  	for (j=0;j<=ecn;j++)	   
       	  	{
       	  	     System.out.print(table[i][j]);
       	  	     System.out.print("  ");
       	  	}
       	  	System.out.println();
       	  }
       }
              

}
class window1 extends Canvas{
       public int m=0;
       public void paint(Graphics g) {
             g.setColor(Color.black);
             g.drawLine(0,0,100,0);
             g.drawLine(0,0,0,300);
             g.drawLine(0,1,100,1);
             g.drawLine(1,0,1,300);
             g.setColor(Color.white);
             g.drawLine(100,0,100,300);
             g.drawLine(0,300,100,300);
             g.setColor(Color.lightGray);
             g.drawLine(99,0,99,300);
             g.drawLine(0,299,100,299);

             g.setFont(compile.f);
             g.setColor(Color.blue);
             g.drawString("D=TL",5,20);
             g.drawString("T=int",5,40);
             g.drawString("T=real",5,60);
             g.drawString("L=L1,id",5,80);
             g.drawString("L=id",5,100);
      }
      public void using(int n) {
             Graphics g=this.getGraphics();
             g.setColor(Color.blue);
             g.setFont(compile.f);
             switch(m) {
               case 1:
                    g.drawString("D=TL",5,20);
                    break;
               case 2:
                    g.drawString("T=int",5,40);
                    break;
               case 3:
                    g.drawString("T=real",5,60);
                    break;
               case 4:
                    g.drawString("L=L1,id",5,80);
                    break;
               case 5:
                    g.drawString("L=id",5,100);
             }
             g.setColor(Color.red);
             switch(n) {
               case 1:
                    g.drawString("D=TL",5,20);
                    break;
               case 2:
                    g.drawString("T=int",5,40);
                    break;
               case 3:
                    g.drawString("T=real",5,60);
                    break;
               case 4:
                    g.drawString("L=L1,id",5,80);
                    break;
               case 5:
                    g.drawString("L=id",5,100);
             }
             m=n;
      }
}

class window2 extends Canvas{
      public int m=0;
      public void paint(Graphics g) {
             g.setColor(Color.black);
             g.drawLine(0,0,190,0);
             g.drawLine(0,0,0,300);
             g.drawLine(0,1,190,1);
             g.drawLine(1,0,1,300);
             g.setColor(Color.white);
             g.drawLine(190,0,190,300);
             g.drawLine(0,300,190,300);
             g.setColor(Color.lightGray);
             g.drawLine(189,0,189,300);
             g.drawLine(0,299,190,299);

             g.setFont(compile.f); 
             g.setColor(Color.blue);
             g.drawString("L.in=T.type",5,20);
             g.drawString("T.type=int",5,40);
             g.drawString("T.type=real",5,60);
             g.drawString("L1.in=L.in",5,80);
             g.drawString("addtype(id.entry,L.in)",5,100);
      }
      public void using(int n) {
             Graphics g=this.getGraphics();
             g.setColor(Color.blue);
             g.setFont(compile.f);
             switch(m) {
               case 1:
                    g.drawString("L.in=T.type",5,20);
                    break;
               case 2:
                    g.drawString("T.type=int",5,40);                    
                    break;
               case 3:
                    g.drawString("T.type=real",5,60);                    
                    break;
               case 4:
                    g.drawString("L1.in=L.in",5,80);
                    g.drawString("addtype(id.entry,L.in)",5,100);
                    break;
               case 5:
                    g.drawString("addtype(id.entry,L.in)",5,100);
                    break;
               case 6:
                    g.drawString("L.in=T.type",5,20);                   
             }
             g.setColor(Color.red);
             switch(n) {
               case 1:
                    g.drawString("L.in=T.type",5,20);
                    break;
               case 2:
                    g.drawString("T.type=int",5,40);                    
                    break;
               case 3:
                    g.drawString("T.type=real",5,60);
                    break;
               case 4:
                    g.drawString("L1.in=L.in",5,80);
                    g.drawString("addtype(id.entry,L.in)",5,100);
                    break;
               case 5:
                    g.drawString("addtype(id.entry,L.in)",5,100);
                    break;
               case 6:
                    g.drawString("L.in=T.type",5,20);
             }
             m=n;
      }
}
class window3 extends Canvas{
      public void update(Graphics g) {
             paint(g);
      }
      public void paint(Graphics g) {
             g.drawImage(compile.offscreen,0,0,this);
      }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -