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

📄 newstring.java

📁 一个简单的文法分析算法
💻 JAVA
字号:
public class NewString
{
    private String string;
    private char[] character;
    private int count;
    private NewString[] Nstr;
    private int sign=0;
    private int head=0;
    static public char ending;

    public NewString(String str)
    {
       string=str;
       character=string.toCharArray();
        char[] c;
        String use=" ";
        for(int i=0;i<character.length;i++)
           {
               if(character[i]=='|') count++;
               if(character[i]>='a'&&character[i]<='z') 
               {
                ending=character[i];
                }
            }
       sign=0;
       
    }
    public void initNewString()
    {
        
        char[] temp;
        int m=0,n=0;
        String s="0";
        
       if(sign==0) Nstr=new NewString[count+2];
       else if(sign==1) Nstr=new NewString[3];
       else Nstr=new NewString[1];
        for(int i=0;i<character.length;i++)
           { 
            
            if(character[i]==':'&&m==0&&sign==0)  
            {
                    
                    temp=new char[i-n+1];
                    for(int j=0;j<i-n+1;j++)
                     
                    temp[j]=character[n+j];
                    s=s.valueOf(temp);
                   Nstr[m]=new NewString(s);
                   Nstr[m].setSign(1);
                    
                    m++; 
                    n=i+3;
            }
            if((character[i]=='|'||character[i]==' '||character[i]=='%')&&sign==0) 
            {
                    
                    temp=new char[i-n+1];
                    for(int j=0;j<i-n+1;j++)
                     
                    temp[j]=character[n+j];
                    s=s.valueOf(temp);
                    Nstr[m]=new NewString(s);
                    Nstr[m].setHead(1);
                    Nstr[m].setSign(1);
                    m++; 
                    n=i+1;
             }
           
            if(sign==1&&string.length()!=2&&(character[i]=='+'||character[i]=='-'||character[i]=='*'||character[i]=='/')) 
                {
                   temp=new char[i];
                    for(int j=0;j<i;j++)
                     
                    temp[j]=character[j];
                    s=s.valueOf(temp);
                   Nstr[0]=new NewString(s);
                   
                   s=s.valueOf(character[i]);
                  Nstr[1]=new NewString(s);
                  
                  temp=new char[character.length-i-1];
                  for(int j=0;j<character.length-i-1;j++)
                     temp[j]=character[i+1+j];
                     s=s.valueOf(temp);
                     Nstr[2]=new NewString(s);
                   for(int j=0;j<3;j++)
                      {  
                        Nstr[j].setHead(2);
                        Nstr[j].setSign(2);
                    }
                 }
            if(string.length()==2&&sign==1)
            {
                  Nstr=new NewString[1];
                  Nstr[0]=new NewString(string);
            }
            if(sign==1&&character[i]=='(')
          {
            Nstr=new NewString[1];
              Nstr[0]=new NewString(string);
           }
            else   ;
        }     
      
           
    }
    public void setSign(int Sign)
    {
       sign=Sign;   
    }
    public void setHead(int Head)
    {
        head=Head;   
    }
    public void setString(String str)
    {
        string=str;   
    }
    public void setCharacter(char[] c)
    {
     character=c;   
    }
    public void setIndexCharcter(char c,int index)
    {
     character[index-1]=c;   
    }
    public void setCount(int count)
    {
     this.count=count;   
    }
    public String getString()
    {
        char[] temp=string.toCharArray();
        String se="";
        if(temp.length!=1){
        temp[temp.length-1]=' ';
            }
         se=se.valueOf(temp);  
        return se;   
    }
    public char[] getCharacter()
    {
        return character;   
    }
    public char getIndexCharacter(int index)
    {
        return character[index-1];
    }
    public int getCount()
    {
        return count;
    }
    public NewString[] getNewS()
    {
        return Nstr;   
    }
    public int getHead()
    {
        return head;   
    }
    public int getSign()
    {
       return sign;   
    }
    public void setEnding(char Ending)
    {
         ending=Ending;   
    }
    public char getEnding()
    {
         return ending;   
    }
   
}

⌨️ 快捷键说明

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