首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查方法是否有带antlr的注释

检查方法是否有带antlr的注释
EN

Stack Overflow用户
提问于 2016-07-21 22:59:31
回答 2查看 180关注 0票数 1

Java.g4的更改

文件开头

代码语言:javascript
复制
grammar Java;


@lexer::members {
    public static final int WHITESPACE = 1;
    public static final int COMMENTS = 2;
}

文件末尾

代码语言:javascript
复制
//
// Whitespace and comments
//

WS  :  [ \t\r\n\u000C]+ -> channel(WHITESPACE) ;  // channel(1)

COMMENT    :   '/*' .*? '*/' -> channel(COMMENTS)  ; // channel(2)

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

尝试将注释和空格发送到不同的通道,如"The Definitive ANTLR 4 Reference“一书中所述,第12.1章在不同通道上广播令牌

执行antlr4 Java.g4时,将显示以下错误

代码语言:javascript
复制
java org.antlr.v4.Tool Java.g4
    warning(155): Java.g4:1017:35: rule WS contains a lexer command with an unrecognized constant value; lexer interpreters may produce incorrect output
    warning(155): Java.g4:1019:40: rule COMMENT contains a lexer command with an unrecognized constant value; lexer interpreters may produce incorrect output
    warning(155): Java.g4:1021:45: rule LINE_COMMENT contains a lexer command with an unrecognized constant value; lexer interpreters may produce incorrect output

我看不出有什么问题?

EN

回答 2

Stack Overflow用户

发布于 2016-07-22 00:13:39

您应该替换以下片段:

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

使用字符串:

代码语言:javascript
复制
channels { WHITESPACE, COMMENTS }
票数 3
EN

Stack Overflow用户

发布于 2016-07-22 16:02:33

解决方案是拆分lexer和parser文件。并且作为kvanttt在lexer文件中使用channels { WHITESPACE, COMMENTS },完整的文件将被上传到我的https://github.com/nkv123/grammars-v4分支存储库。

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

https://stackoverflow.com/questions/38507707

复制
相关文章

相似问题

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