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

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