首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向Antlr Java 8语法添加注释

向Antlr Java 8语法添加注释
EN

Stack Overflow用户
提问于 2016-05-28 23:53:05
回答 1查看 2.9K关注 0票数 5

当使用Java8语法进行antlr时,我希望将‘注释’记录到AST中(不是对它们做任何事情,而是存储以便以后的复制)。https://github.com/antlr/grammars-v4/blob/master/java8/Java8.g4

IE:我想将java源代码文件读入AST中,然后最终再次输出它,但是要包括

我想知道是否有一个简单的调整语法允许这.(或者,如果我天真的想法,必须把‘评论’纳入每一个表达是可悲的事实,这件事.)如果是这样..。那是什么?

代码语言:javascript
复制
COMMENT
    :   '/*' .*? '*/' -> skip
    ;

LINE_COMMENT
    :   '//' ~[\r\n]* -> skip
    ;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-29 00:45:52

据我所见,你可以通过以下方式将评论保留在自己的“频道”上:

将其添加到语法中:

代码语言:javascript
复制
@lexer::members {
    public static final int WHITESPACE = 1;
    public static final int COMMENTS = 2;
}

并转变为:

代码语言:javascript
复制
COMMENT
    : '/*' .*? '*/' -> channel(COMMENTS)
    ;

LINE_COMMENT
    : '//' ~[\r\n]* -> channel(COMMENTS)
    ;

来自:https://stackoverflow.com/a/17960734/2801237

官方的“文档”(实际上,他的书实际上是“真实的”文档)简要地提到了这一点:

https://github.com/antlr/antlr4/blob/master/doc/grammars.md

这本书的(一个版本)写着

您可以在不同的通道上向解析器发送不同的令牌。例如,在解析Java时,您可能希望在一个通道上使用空白和常规注释,而在另一个通道上需要Javadoc注释。

这是我所收到的来自antlr一代的警告:(我读到你可以忽略这些,但是.也许有更好的方法来做到这一点

警告(155):java8comments.g4:1725:35:规则WS包含一个不被识别的常量的lexer命令;lexer解释器可能产生错误的输出 警告(155):java8comments.g4:1729:33: DOC_COMMENT规则包含一个不被识别的常量的lexer命令;lexer解释器可能产生不正确的输出 警告(155):java8comments.g4:1733:31:规则注释包含一个不被识别的常量的lexer命令;lexer解释器可能产生不正确的输出 警告(155):java8comments.g4:1737:31: LINE_COMMENT规则包含一个不被识别的常量的lexer命令;lexer解释器可能产生不正确的输出

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37504826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档