今天在网上逛的时候,看到一段识别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; }}

评论