我有這樣的東西fragment COMMENT_TEXT : ~(')')* ;COMMENT : '(' COMMENT_TEXT ')' ;SLASH_COMMENT : '//' COMMENT_TEXT '//' ;comment : COMMENT | SLASH_COMMENT ;并想要COMMENT_TEXT在代碼中獲取字符串。這似乎是一項簡單的任務,但我只是堅持了一段時間。這是監聽器的一部分:public override void ExitComment(P.CommentContext context){ var cb = new CommentBlock(); cb.OriginalText = context.GetText(); _currentBlock = cb;}OriginalText是帶大括號的注釋。我怎樣才能得到COMMENT_TEXT它自己?請提供相關文章的鏈接來解決此問題,而不是終極教程或參考手冊本身。例如,對于這樣的輸入:(testCommentText123)我想要得到CommentBlock.OriginalText == "testCommentText123"
1 回答

九州編程
TA貢獻1785條經驗 獲得超4個贊
沒有特定的方法可以訪問 ANTLR 中令牌的各個部分。你只需要把繩子自己拆開就可以了。您可以使用正則表達式或檢查標記類型(查看它是斜杠還是括號注釋),然后使用 刪除Substring
第一個和最后一個 2 或 1 個(取決于注釋的類型)字符。
PS:您的規則將匹配文件中SLASH_COMMENT
從第一個到最后一個的所有內容。這可能不是你想要的。//
//
- 1 回答
- 0 關注
- 97 瀏覽
添加回答
舉報
0/150
提交
取消