0916 詞法分析(2)

44.林集團發表於2015-09-24

 

 

 

 

package compileWork;

import java.util.ArrayList;
import java.util.Scanner;

public class compileWork_1
{
 public static void main(String args[])
 {
  Scanner s=new Scanner(System.in);
  System.out.println("please input code");
  String scode=s.nextLine();
  s.close();
  ArrayList<String> arrayphrase=new ArrayList<String>();
  for(int i=0;i<scode.length();i++)
  {
   char[] stemp=scode.substring(i, i+1).toCharArray();
   char cword=stemp[0];
   String sphrase="";
   int flag=0;
   while(i<scode.length()&&cword<='Z'&&cword>='A'||cword<='z'&&cword>='a'||cword>='0'&&cword<='9')
   {
    flag=1;
    i++;
    sphrase+=cword;
    if(i<scode.length()){
    char[] cnextTemp=scode.substring(i,i+1).toCharArray();
    cword=cnextTemp[0];
    }else{
     break;
    }
   }
   if(flag==1){
   arrayphrase.add(sphrase);
   sphrase="";
   }
   if(i<scode.length()&&cword=='<')
   {
    i++;
    sphrase+=cword;
    char[] cnextTemp=scode.substring(i,i+1).toCharArray();
    cword=cnextTemp[0];
    if(i<scode.length()&&i<scode.length()&&cword=='=')
    {
     i++;
     sphrase+=cword;
    }
    if(i<scode.length()&&cword=='>')
    {
     i++;
     sphrase+=cword;
    }
    arrayphrase.add(sphrase);
    sphrase="";
   }
  if(i<scode.length()&&cword==':')
  {
   i++;
   sphrase+=cword;
   char[] cnextTemp=scode.substring(i,i+1).toCharArray();
   cword=cnextTemp[0];
   if(i<scode.length()&&i<scode.length()&&cword=='=')
   {
    i++;
    sphrase+=cword;
   }
   arrayphrase.add(sphrase);
   sphrase="";
  }
  if(i<scode.length()&&cword=='+')
  {
   i++;
   sphrase+=cword;
   arrayphrase.add(sphrase);
  }
  if(i<scode.length()&&cword=='-')
  {
   i++;
   sphrase+=cword;
   arrayphrase.add(sphrase);
  }
  if(i<scode.length()&&cword=='*')
  {
   i++;
   sphrase+=cword;
   arrayphrase.add(sphrase);
  }
  if(i<scode.length()&&cword=='/')
  {
   i++;
   sphrase+=cword;
   arrayphrase.add(sphrase);
  }
  if(i<scode.length()&&cword==':')
  {
   i++;
   sphrase+=cword;
   arrayphrase.add(sphrase);
  }
  if(i<scode.length()){
  sphrase+=cword;
  arrayphrase.add(sphrase);
  }
 }
 for(String ssign :arrayphrase){
   switch (ssign){
   case "begin":
    System.out.print("<1 "+ssign+">");
    break;
   case "end":
    System.out.print("<2 "+ssign+">");
    break;
   case "if":
    System.out.print("<3 "+ssign+">");
    break;
   case "then":
    System.out.print("<4 "+ssign+">");
    break;
   case "else":
    System.out.print("<5 "+ssign+">");
    break;
   case "while":
    System.out.print("<6 "+ssign+">");
    break;
   case "do":
    System.out.print("<7 "+ssign+">");
    break;
   case "+":
    System.out.print("<13 "+ssign+">");
    break;
   case "-":
    System.out.print("<14 "+ssign+">");
    break;
   case "*":
    System.out.print("<15 "+ssign+">");
    break;
   case "/":
    System.out.print("<16 "+ssign+">");
    break;
   case "<=":
    System.out.print("<17 "+ssign+">");
    break;
   case "<>":
    System.out.print("<18 "+ssign+">");
    break;
   case "<":
    System.out.print("<19 "+ssign+">");
    break;
   case ":":
    System.out.print("<21 "+ssign+">");
    break;
   case ":=":
    System.out.print("<22 "+ssign+">");
    break;
   case ";":
    System.out.print("<23 "+ssign+">");
    break;
   default:
   int flagisn=1;
   char[] cssigntemp=ssign.toCharArray();
    for(int k=0;k<ssign.length();k++){
     if(Character.isDigit(cssigntemp[k])!=true){
      flagisn=0;
     }
    }
    if(flagisn==1){
     System.out.print("<11 "+ssign+">");
    }else{
     System.out.printf("<10"+ssign+">");
    }
  }  
 }
   }
}

相關文章