| Posted in JAVA技术 @ 2007/03/27 15:41 by 博爱老头
今天在网上逛的时候,看到一段识别java注释代码的自动机,所以跟大家分享!(因为链接地址不记得了,所以涉及版权问题请与我联系)


class CommentAutoMata{
   final int start=0;
   final int one=1;
   final int two=2;
   final int three=3;
   final int finalState=4;
   final int five=5;
   final int six=6;
   public List getCommentList(String s){
       ArrayList ret=new ArrayList();
       int begin=-1;      
       int curState=start;
       for(int i=0;i<s.length();i++){
           char c=s.charAt(i);
           switch(curState){
           case(start):
               if(c=='/'){
                   begin=i;
                   curState=one;
               }
               else if(c=='"'){
                   //识别字符出
                   curState=5;
               }
               break;
           case(one):
               if(c=='*') curState=two;
               else curState=start;            
               break;
           case(two):
               if(c=='*') curState=three;
               break;
           case(three):
               if(c=='/'){
                   curState=finalState;
                    //eat
                   ret.add(s.substring(begin,i+1));
                   //reset;
                   curState=start;
                   begin=-1;
               }
               else curState=two;
               break;
           case(five):
               if(c=='"') curState=start;
               else if(c=='\\')curState=six;
               break;
           case(six):
               curState=five;
               break;
             
           }
       }
       
       return ret;
   }
}

作者:博爱老头@博爱老头的草屋
地址:http://www.icnote.com/post/8/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!

文章来自: 本站原创
发表评论
昵称
密码 [ 游客无需密码 ]
电邮
网址
打开HTML 打开UBB 打开表情 隐藏 记住我