zoukankan      html  css  js  c++  java
  • 0916 词法分析(2)

    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+">");
        }
      }  
     }
       }
    }

  • 相关阅读:
    SQLERRM, use it with caution.
    nginx 的常用优化
    (备忘) 快速启动栏 “显示桌面”丢失 解决方案
    Invoke and BeginInvoke BeginInvoke和EndInvoke方法 (转)
    枚举CE进程
    WinForm 中DataGrideView 对键盘输入进行筛选
    双网卡上网(转载)
    在MSSQL上强制删除订阅 (转)
    sql server系统表详细说明(转)
    event.keycode大全(javascript)
  • 原文地址:https://www.cnblogs.com/linjituan/p/4834191.html
Copyright © 2011-2022 走看看