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

    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>();
      int i;
      for(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=='=')
        {
         sphrase+=cword;
        }
        if(i<scode.length()&&cword=='>')
        {
         sphrase+=cword;
        }
        arrayphrase.add(sphrase);
        sphrase="";
       }
      if(i<scode.length()&&cword==':')
      {
       sphrase+=cword;
       char[] cnextTemp=scode.substring(i+1,i+2).toCharArray();
       cword=cnextTemp[0];
       if(i<scode.length()&&i<scode.length()&&cword=='=')
       {
        i++;
        sphrase+=cword;
       }
       arrayphrase.add(sphrase);
       sphrase="";
      }
      if(i<scode.length()&&cword=='+')
      {
       sphrase+=cword;
       arrayphrase.add(sphrase);
       sphrase="";
      }
      if(i<scode.length()&&cword=='-')
      {
       sphrase+=cword;
       arrayphrase.add(sphrase);
       sphrase="";
      }
      if(i<scode.length()&&cword=='*')
      {
       sphrase+=cword;
       arrayphrase.add(sphrase);
       sphrase="";
      }
      if(i<scode.length()&&cword=='/')
      {
       sphrase+=cword;
       arrayphrase.add(sphrase);
       sphrase="";
      }
      if(i<scode.length()&&cword==';')
      {
       sphrase+=cword;
       arrayphrase.add(sphrase);
       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+">");
        }
      }  
     }
       }
    }

  • 相关阅读:
    FreeRTOS之源码 及 移植详解
    FreeRTOS之Tracealyzer for FreeRTOS(FreeRTOS+Trace) 详解(源码解析+移植)
    FreeRTOS之全配置项详解、裁剪(FreeRTOSConfig.h)
    linux下安装oracle中遇到的一些问题
    RedHat Enterprise Linux 6 配置Xmanager ,实现图形界面连接
    Linux ext2/ext3文件系统详解
    对固态硬盘ssd进行4k对齐
    在CentOs6.5安装jdk
    Android的API版本和名称对应关系
    Java反射机制及Method.invoke详解
  • 原文地址:https://www.cnblogs.com/linjituan/p/4843968.html
Copyright © 2011-2022 走看看