我有这样的东西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 关注
- 70 浏览
添加回答
举报
0/150
提交
取消