一种在代码中获取标记之间字符串的方法

我有这样的东西


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"


慕哥9229398
浏览 44回答 1
1回答

九州编程

没有特定的方法可以访问 ANTLR 中令牌的各个部分。你只需要把绳子自己拆开就可以了。您可以使用正则表达式或检查标记类型(查看它是斜杠还是括号注释),然后使用 删除Substring第一个和最后一个 2 或 1 个(取决于注释的类型)字符。PS:您的规则将匹配文件中SLASH_COMMENT从第一个到最后一个的所有内容。这可能不是你想要的。////
打开App,查看更多内容
随时随地看视频慕课网APP