2015-07-03 69 views
0

我檢查了每個函數Function()是否都以輸入文件流中的註釋開頭。這樣的:驗證每個函數是否以評論開始,並驗證此評論是否包含保留字詞包含保留字

 SKIP : { " " | "\t" | "\n" | "\r" } 

      /* COMMENTS */ 

SPECIAL_TOKEN : { <SINGLE_LINE_COMMENT: "--" (~["\n","\r"])* ("\n"|"\r"|"\r\n")?> } 


    void Function : { 
       Token firstToken, id;} { 
       firstToken=<start> id=<id> "(" ")" 
       ......... 

       <end> 
       { if(firstToken.specialToken == null 
        || firstToken.specialToken.kind != COMMENT) 
         System.out.println("Function " +id.image+ 
              " is not preceded by a comment!") ; 
       } } 

所以,我想驗證此評論是否包含保留字。

預先感謝您。

+0

我建議使用Java的正則表達式來搜索'firstToken.specialToken.image'中的關鍵字。 –

回答

0

如果你只是想知道評論是否包含給定的單詞,那麼你也可以使用Java的字符串搜索機制。假設您想知道函數定義之前的註釋中是否包含「bandersnatch」。

void Function() : { 
     Token firstToken, id;} 
    { 
     firstToken=<start> id=<id> "(" ")" 
     ......... 
     <end> 
     { if(firstToken.specialToken == null 
      || firstToken.specialToken.kind != COMMENT) 
       System.out.println("Function " +id.image+ 
            " is not preceded by a comment!") ; 
      else { 
       String comment = firstToken.specialToken.image ; 
       boolean hasBandersnatch = comment.indexOf("bandersnatch") != -1 ;     if(! hasBandersnatch) 
        System.out.println("Function " +id.image+ 
            " is preceded by a comment that does not contain 'bandersnatch'!") ; } 
     } 
    } 

如果您要搜索爲不區分大小寫,請更改comment的初始化。

String comment = firstToken.specialToken.image.toLower() ; 
+0

非常感謝。它工作正常。但爲了不區分大小寫,我已經改變了註釋的初始化,例如:'String comment = firstToken.specialToken.image.toLower()'和'boolean hasBandersnatch = comment.indexOf(「bandersnatch」.toLower())'。謝謝 – kadahowa

相關問題